http://acm.hdu.edu.cn/showproblem.php?pid=4608
I-number
The I-number of x is defined to be an integer y, which satisfied the the conditions below:
1. y>x;
2. the sum of each digit of y(under base 10) is the multiple of 10;
3. among all integers that satisfy the two conditions above, y shouble be the minimum.
Given x, you're required to calculate the I-number of x.
An integer T(T≤100) will exist in the first line of input, indicating the number of test cases.
The following T lines describe all the queries, each with a positive integer x. The length of x will not exceed 105.
Output the I-number of x for each query.
标准签到题,直接模拟高精度即可,每次加1然后判断即可,因为只要模10为0即可,所以事实上并不会增加多次,废话不多说,直接上代码。
#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdio.h>
#define maxn 100010
using namespace std;
int a[maxn];
char str[maxn];
int solve(int len)
{
int sum=0,i;
a[len]++;
for(i=len;i>=0;i--)
{
if(a[i]>9)
a[i]%=10,a[i-1]++;
sum=(sum+a[i])%10;
}
return sum==0;
}
int main()
{
//freopen("dd.txt","r",stdin);
int ncase;
scanf("%d",&ncase);
while(ncase--)
{
scanf("%s",str+1);
int i,len=strlen(str+1);
for(i=1;i<=len;i++)
a[i]=str[i]-'0';
a[0]=0;
for(i=0;i<20;i++)
{
if(solve(len))
break;
}
if(a[0])
cout<<a[0];
for(i=1;i<=len;i++)
cout<<a[i];
printf("\n");
}
return 0;
}