#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] 举报,一经查实,本站将立刻删除。