题目大意
求一个正整数x满足两个条件
1、Y>X
2、各个位置数字之和%10等于0。
思路:
大数加法
要满足的是两个条件
1、Y>X 那么我们让x累加 在比x大的数字中搜索答案
2、各个位置数字之和%10等于0, 对于小于19的正整数 大于它且各个位数字之和%10=0 的最小的数就是19,大于19的就每次加一去判断,满足条件就跳出循环。
#include<stdio.h>
#include<string.h>
using namespace std;
const int maxn=1e5+7;
int main()
{
char str[maxn];
int t,a[2*maxn],len1;
long long sum1,sum2;
scanf("%d",&t);
while(t--)
{
sum2=0,sum1=0;
scanf("%s",str);
memset(a,0,sizeof(a));
len1=strlen(str);
for(int i=0;i<len1;i++)
{
a[i]=str[len1-i-1]-'0';
}
for(int i=0;i<len1;i++)
{
sum1+=a[i];
}
if(sum1==0)
{
printf("19\n");
}
else
{
for(int j=1; ;j++)
{
sum2=0;
a[0]+=1;
for(int i=0;i<=2*len1;i++)
{
if(a[i]>=10)
{
a[i]-=10;
a[i+1]+=1;
}
sum2+=a[i];
}
if(sum2%10==0)
{
for(int k=2*len1;k>=0;k--)
{
if(a[k]!=0)
{
for(int x=k;x>=0;x--)
printf("%d",a[x]);
break;
}
}
printf("\n");
break;
}
}
}
}
return 0;
}