Hud 4608

来源:互联网 发布:论坛发帖软件大全 编辑:程序博客网 时间:2024/04/30 09:31

题意:给你一个数让你求出满足1.比给出的数大2.要是所有位数之和是十的倍数。

思路:就是模拟,就是一直加一知道所有位数之和是十的倍数,但要注意的是进位的时候相当是在所有位数之和减掉了九。

#include <stdio.h>#include<string>#include <math.h>#include <vector>#include <cstring>#include<algorithm>using namespace std;const int m=1e6;int a[m];char s[m];int main(){    int n;    while(~scanf("%d", &n))    {        while(n--)        {        memset(s, 0, sizeof(s));       scanf("%s", s);       int len =strlen(s),k=0,sum=0,t=0,top=0;       memset(a, 0, sizeof(a));       for(int i =len -1; i>=0; i--)       {           a[k++]=s[i]-'0';           sum+=s[i]-'0';       }       while(1)       {           sum++;           a[0]++;           if(a[0]>=10)           {               t=a[0]/10;               a[0]%=10;               int i;               for( i =1;;i++)               {                   if(t==0)                   break;                   a[i]+=t;                   t=a[i]/10;                   if(a[i]>=10)                     a[i]%=10;                   top++;               }               sum=sum-top*9;               top=0;           }          //printf("++%d__*%d \n",a[0],sum);          if(sum%10==0)           break;       }       for(int i=k; i>=0; i--)       {           if(i==k&&a[i]==0)           continue;         printf("%d",a[i]);       }        puts("");    } }    return 0;}


 

原创粉丝点击