大数加法。
注意:
输入
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 }