3116 高精度练习之加法
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题目描述
Description
给出两个正整数A和B,计算A+B的值。保证A和B的位数不超过500位。
输入描述
Input Description
读入两个用空格隔开的正整数
输出描述
Output Description
输出A+B的值
样例输入
Sample Input
3 12
样例输出
Sample Output
15
数据范围及提示
Data Size & Hint
两个正整数的位数不超过500位
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 int main() 6 { 7 char a1[501],b1[501]; 8 int a[501],b[501],c[501],lena,lenb,lenc,i,x; 9 memset(a,0,sizeof(a)); 10 memset(b,0,sizeof(b)); 11 memset(c,0,sizeof(c)); 12 cin>>a1; 13 cin>>b1; 14 lena=strlen(a1); 15 lenb=strlen(b1); 16 for(i=0; i<lena; i++) 17 a[lena-i]=a1[i]-48; 18 for(i=0; i<lenb; i++) 19 b[lenb-i]=b1[i]-48; 20 lenc=1; 21 x=0; 22 while(lenc<=lena||lenc<=lenb) 23 { 24 c[lenc]=a[lenc]+b[lenc]+x; 25 x=c[lenc]/10; 26 c[lenc]%=10; 27 lenc++; 28 } 29 c[lenc]=x; 30 if(c[lenc]==0) 31 lenc--; 32 for(i=lenc; i>=1; i--) 33 cout<<c[i]; 34 cout<<endl; 35 return 0; 36 }