zrq495
www.zrq495.com

大数加法。

注意:

输入
1
00
00
0

输出
0


代码如下:

 1     #include<iostream>
 2     #include<cstring>
 3     using namespace std;
 4     int main()
 5     {
 6         int T, i;
 7         char a[1000];
 8         int sum[1000], b[1000];
 9         cin >> T;
10         while(T--)
11         {
12             memset(a, 0, sizeof(a));
13             memset(b, 0, sizeof(b));
14             memset(sum, 0, sizeof(sum));
15             cin >> a;
16             int j=0;
17             while(strcmp(a, "0"))
18             {
19                 int alen=strlen(a);
20                 for (i=0; i<alen; i++)
21                     b[alen-i-1]=a[i]-'0';
22                 j=0;
23                 for (i=0; i<alen; i++)
24                 {
25                     sum[j]+=b[i];
26                     int k;
27                     if (sum[j] >= 10)
28                     {
29                         sum[j]=sum[j]%10;
30                         sum[j+1]++;
31                     }
32                     j++;
33                     for (k=j; sum[k] >= 10; k++)
34                     {
35                         sum[k]=sum[k]%10;
36                         sum[k+1]++;
37                     }
38                 }
39                 memset(a, 0, sizeof(a));
40                 memset(b, 0, sizeof(b));
41                 cin >> a;
42             }
43             int x;
44             for (x=999; x>=0; x--)
45             {
46                 if (sum[x] != '\0')
47                     break;
48             }
49             if (x < 0) cout << "0";
50             else
51             {
52                 for (i=x; i>=0; i--)
53                     cout << sum[i];
54             }
55             cout << endl;
56             if (T)
57                 cout << endl;
58         }
59         return 0;
60     }
posted on 2012-07-25 18:41  zrq495  阅读(296)  评论(0编辑  收藏  举报