HDU

来源:互联网 发布:数据库安全性论文 编辑:程序博客网 时间:2024/06/16 19:01

题意:

           给出一个正整数x,求最小的整数y,满足y > x且y的所有位的数字和是10的倍数。(x的长度小于1e5)

思路:

           高精度加法,枚举+1,每次发生进位时,数位的和 减9 。每次计算后判断即可。

代码:

#include <bits/stdc++.h>using namespace std;long long sum;string str1;string str2="1";void add(){    int len1=str1.size();    int len2=1;    if(len1<len2) {swap(str1,str2);swap(len1,len2);}    int c=0;    for(int i=len1-1,j=len2-1;i>=0;i--,j--)    {        c+=str1[i]-'0';        if(j>=0) c+=str2[j]-'0';        str1[i]=c%10+'0';        c/=10;        if(c) sum-=9;    }    if(c){        str1='1'+str1;        //sum-=9;    }    return ;}int main(){    int T,temp,ans;cin>>T;while(T--){        cin>>str1;        sum=0;        int len=str1.size();        for(int i=0;i<len;i++)            sum+=str1[i]-'0';        //cout<<sum<<endl;        while(1){            add();sum++;            //cout<<sum<<' '<<str1<<endl;            if(sum%10==0){                cout<<str1<<endl;                break;            }        }}}






0 0