10:大整数加法
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
求两个不超过200位的非负整数的和。
- 输入
- 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
- 输出
- 一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
- 样例输入
-
22222222222222222222 33333333333333333333
- 样例输出
-
55555555555555555555
- 来源
- 程序设计实习2007
-
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 char a[100001]; 6 char b[100001]; 7 char c[100001]; 8 int a1[100001]; 9 int b1[100001]; 10 int c1[100001]; 11 int main() 12 { 13 scanf("%s",&a); 14 scanf("%s",&b); 15 int la=strlen(a); 16 int lb=strlen(b); 17 for(int i=0;i<la;i++) 18 a1[i]=a[la-i-1]-'0'; 19 for(int i=0;i<lb;i++) 20 b1[i]=b[lb-i-1]-'0'; 21 int x=0;//进位 22 int i=0;// 结果的位数 23 while(i<la||i<lb) 24 { 25 c1[i]=a1[i]+b1[i]+x; 26 x=c1[i]/10; 27 c1[i]=c1[i]%10; 28 i++; 29 } 30 c1[i]=x; 31 while(1) 32 { 33 if(c1[i]==0&&i>=1) 34 i--; 35 else break; 36 } 37 38 for(int j=i;j>=0;j--) 39 cout<<c1[j]; 40 return 0; 41 }