大数相加

最近没什么事,决定把杭电没提交的题一道道的做过去......= =

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:
",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
",c);
47         if(n!=0) printf("
");
48     }
49     return 0;
50 }
原文地址:https://www.cnblogs.com/teilawll/p/3537530.html