因为a[i] > a[i+1] 所以在上一轮答案基础上构造就行了
#include <iostream>
#include <stdio.h>#include <stdlib.h>
#include <string.h>
using namespace std;
int ans[1000];
int b[333];
int len;
void solve( int num)
{
for( int i = 1;num; i++)
{
while(ans[i] < 9 && num)
{
num--;
ans[i]++;
}
if(len < i)
len = i;
}
}
void output()
{
for( int i = len; i >= 1; i--)
printf("%d",ans[i]);
printf("\n");
}
int main()
{
int n;
scanf("%d",&n);
memset(ans, 0, sizeof(ans));
memset(b, 0, sizeof(b));
len = 1;
scanf("%d",&b[1]);
solve(b[1]);
output();
for( int i = 2; i <= n; i++)
{
scanf("%d",&b[i]);
int res = b[i] - b[i-1];
if(res > 0)
{
solve(res);
output();
}
else
{
int k = 1;
while(1)
{
if(ans[k] < 9 && res > 0)
{
ans[k]++;
res--;
solve(res);
output();
break;
}
res += ans[k];
ans[k] = 0;
k++;
if(len < k) len = k;
}
}
}
}