描述
输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
样例输出
求两个不超过200位的非负整数的和。
22222222222222222222
33333333333333333333
55555555555555555555
#include<iostream> #include<cstdio> #include<cmath> #include<string> #include<algorithm> using namespace std; const int maxn=10005; int a[maxn],b[maxn],c[maxn],ans[maxn],lena,lenb,lenans; void read(int *a,int &len) { string cur; cin>>cur; len=cur.length(); for(int i=0;i<len;i++) a[i]=cur[i]-48; reverse(a,a+len); } int main() { read(a,lena); read(b,lenb); lenans=max(lena,lenb); for(int i=0;i<=lenans;i++) { ans[i]=a[i]+b[i]+c[i]; if(ans[i]>9) { c[i+1]=ans[i]/10; ans[i]=ans[i]%10; } } while(ans[lenans]>0) lenans++; bool first=true; for(int i=lenans-1;i>=0;i--) { if(first==true&&ans[i]>0) first=false; if(first==false) cout<<ans[i]; } if(first==true) cout<<0; return 0; }