求两个不超过200位的非负整数的和。
输入有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。输出一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。样例输入2222222222222222222233333333333333333333样例输出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;}
新闻热点
疑难解答