#include <stdio.h> #include <string.h> int maxLen; int a[110000]; |
#include <stdio.h> #include <string.h> int maxLen; int a[110000]; int y[110000]; void plus(int s){ int carry=0; int cnt=0; int k=maxLen-1; if(s==10){ y[cnt++]=a[k--]; carry=(a[k]+1)/10; y[cnt++]=(a[k]+1)%10; k--; }else{ y[cnt++]=(a[k]+s)%10; carry=(a[k]+s)/10; k--; } while(carry!=0 || k>=0){ if(k>=0){ y[cnt++]=(a[k]+carry)%10; carry=(a[k]+carry)/10; k--; }else{ y[cnt++]=carry; carry=0; } } maxLen=cnt; } int main() { int T; char x[110000]; scanf("%d",&T); while( T-- ){ int sum=0; int cnt=0; scanf("%s",x); for(int i=0; x[i]!=‘\0‘; i++){ sum+=x[i]-‘0‘; a[cnt++]=x[i]-‘0‘; } maxLen=cnt; int t=10-sum%10; if(t>=(10-a[maxLen-1])){ plus(10-a[maxLen-1]); sum=0; cnt=0; for(int i=maxLen-1; i>=0; i--){ sum+=y[i]; a[cnt++]=y[i]; } t=10-sum%10; if(sum%10!=0) plus(t); }else{ plus(t); } for(int i=maxLen-1; i>=0; i--){ printf("%d",y[i]); } printf("\n"); } return 0; }
原文:http://www.cnblogs.com/chenjianxiang/p/3551917.html