微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

hdu4608

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
void add(char a[],char b[],char back[])
{
    int i,j,k,up,x,y,z,l;
    char *c;
    if (strlen(a)>strlen(b)) l=strlen(a)+2; else l=strlen(b)+2;
    c=(char *) malloc(l*sizeof(char));
    i=strlen(a)-1;
    j=strlen(b)-1;
    k=0;up=0;
    while(i>=0||j>=0)
        {
            if(i<0) x='0'; else x=a[i];
            if(j<0) y='0'; else y=b[j];
            z=x-'0'+y-'0';
            if(up) z+=1;
            if(z>9) {up=1;z%=10;} else up=0;
            c[k++]=z+'0';
            i--;j--;
        }
    if(up) c[k++]='1';
    i=0;
    c[k]='\0';
    for(k-=1;k>=0;k--)
        back[i++]=c[k];
    back[i]='\0';
} 
 int res(char s[])
 {
     int len=strlen(s),d=0,i;
        for(i=0;i<len;i++)
        {
            d+=s[i]-'0';
            d%=10;
        }
        return d;
 }

 


int main()
{
    int T,i,j;
    
    cin>>T;
    while(T--)
    {char s[200086]={'\0'},s1[200086]={'\0'},s2[200086]={'\0'},s3[200086]={'\0'};
        cin>>s;
        int len=strlen(s);
        int d=res(s);
        if(d==0)
        {
            s1[0]=10-(s[len-1]-'0')+'0';
            add(s,s1,s2);
            d=res(s2);
            if(d==0){
                cout<<s2<<endl;continue;
            }
            s1[0]=10-d+'0';
            add(s2,s3);
            cout<<s3<<endl;
            continue;
        }
        else
        {
            if(d>s[len-1]-'0')
            {
                s1[0]=10-d+'0';
                add(s,s2);
                cout<<s2<<endl;
                continue;
            }
            else{
                s1[0]=10-(s[len-1]-'0')+'0';
            add(s,s3);
            cout<<s3<<endl;
            continue;
            }
        }
        s1[0]=d+'0';
        add(s,s2);
        cout<<s2<<endl;
    }
    return 0;
} 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐