最近没什么事,决定把杭电没提交的题一道道的做过去......= =
A + B Problem II
简单的大树相加的题目,以前一直觉得感觉大数相加好麻烦,都没好好的做一下,认真去写还是觉得比较简单(((o(*?▽?*)o)))
代码如下:
TIME:0ms Memory:260K
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 5 int main() 6 { 7 int n,i=0,k; 8 scanf("%d",&n); 9 while(n--) 10 { 11 i++; 12 char a[1010],b[1010],c[1010]; 13 scanf("%s%s",a,b); 14 printf("Case %d:\n",i); 15 getchar(); 16 printf("%s + %s = ",a,b); 17 int lentha,lenthb,maxx,i,j,xa,xb,x; 18 lentha=strlen(a),xa=lentha; 19 lenthb=strlen(b),xb=lenthb; 20 maxx=max(lentha,lenthb); 21 x=maxx+1; 22 memset(c,0,sizeof(c)); 23 for(j=0;j<maxx;j++) 24 { 25 xa--,xb--,x--; 26 int y; 27 char xxa,xxb; 28 if(xa<0) xxa=‘0‘; else xxa=a[xa]; 29 if(xb<0) xxb=‘0‘; else xxb=b[xb]; 30 y=c[x]+((xxa-‘0‘)+(xxb-‘0‘)); 31 if(y>=10) 32 { 33 y=y-10; 34 c[x]=y+‘0‘; 35 c[x-1]=1; 36 } 37 else c[x]=y+‘0‘; 38 } 39 if(c[0]!=0) c[0]=c[0]+‘0‘; 40 if(c[0]==0) 41 { 42 for(k=0;k<maxx;k++) 43 c[k]=c[k+1]; 44 c[maxx]=0; 45 } 46 printf("%s\n",c); 47 if(n!=0) printf("\n"); 48 } 49 return 0; 50 }