I-number

来源:互联网 发布:八门神器搜索数据0 编辑:程序博客网 时间:2024/06/07 03:28

Description

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.
 

Input

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 10 5
 

Output

Output the I-number of x for each query.
 

Sample Input

1202
 

Sample Output

208
 



题目大意:
就是求一个比X大的数,要求各个位之和是10的倍数。应把每位的数相加。
对此以无力吐槽,就一个高精度,就能A掉。

代码:
#include <algorithm>#include <iostream>#include <cstring>#include <cstdlib>#include <vector>#include <queue>#include <cstdio>#include <cmath>#include <string>#include <stack>#include <cctype>using namespace std;void Add(char *str1, char *str2, char *str3){    // str3 = str1 + str2;    int i, j, i1, i2, tmp, carry;    int len1 = strlen(str1), len2 = strlen(str2);    char ch;    i1 = len1-1;    i2 = len2-1;    j = carry = 0;    for( ; i1 >= 0 && i2 >= 0; ++j, --i1, --i2 )    {        tmp = str1[i1]-'0'+str2[i2]-'0'+carry;        carry = tmp/10;        str3[j] = tmp%10+'0';    }    while( i1 >= 0 )    {        tmp = str1[i1--]-'0'+carry;        carry = tmp/10;        str3[j++] = tmp%10+'0';    }    while( i2 >= 0 )    {        tmp = str2[i2--]-'0'+carry;        carry = tmp/10;        str3[j++] = tmp%10+'0';    }    if( carry ) str3[j++] = carry+'0';    str3[j] = '\0';    for( i=0, --j; i < j; ++i, --j )    {        ch = str3[i];        str3[i] = str3[j];        str3[j] = ch;    }}char a[100005];char b[100005];int main(){  int t;  __int64 sum;  scanf("%d",&t);  while(t--)  {      sum=0;      scanf("%s",a);     while(1)      {          sum=0;          Add(a,"1",b);          strcpy(a,b);          int len=strlen(b);          for(int kk=0;kk<len;kk++)            sum+=b[kk]-'0';          if(sum%10==0)            break;      }      printf("%s\n",b);  }    return 0;}

原创粉丝点击