Description
输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。
Input
输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。
Output
输出一行,表示a + b的值。
Sample Input
20100122201001221234567890
2010012220100122
Sample Output
20100122203011233454668012
思路:
利用数组模拟小学加法的过程,注意进位和清除前导0.
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #include<iostream> #include<cstring> using namespace std;
int main() { int lena,lenb,lenc,i,x; int a[105],b[105],c[110]; string s1,s2; while(cin>>s1>>s2) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); lena=s1.length(); lenb=s2.length(); for(i=lena-1,x=0;i>=0;i--,x++) a[x]=s1[i]-'0'; for(i=lenb-1,x=0;i>=0;i--,x++) b[x]=s2[i]-'0'; lenc=0; while(lenc<lena||lenc<lenb) { c[lenc]+=a[lenc]+b[lenc]; if(c[lenc]>9) { c[lenc+1]++; c[lenc]-=10; } lenc++; } if(!c[lenc]) lenc--; for(i=lenc;i>=0;i--) cout<<c[i]; cout<<endl; } return 0; }
|