2157: 大整数加法
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:9
解决:5
题目描述
求两个不超过200位的非负整数的和。
输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入 复制
22222222222222222222
33333333333333333333
样例输出 复制
55555555555555555555
提示
#include<bits/stdc++.h> using namespace std; #define maxn 520 int a[maxn],b[maxn],c[maxn]; int main(){ string A,B; cin>>A>>B; int lena,lenb,len; lena=A.length(); lenb=B.length(); len=max(lena,lenb); for (int i=A.length()-1;i>=0;i--) a[lena-i]=A[i]-'0'; for (int i=B.length()-1;i>=0;i--) b[lenb-i]=B[i]-'0'; for (int i=1;i<=len;i++) { c[i]+=a[i]+b[i]; c[i+1]=c[i]/10; //模拟进位 c[i]=c[i]%10; } if (c[len+1]>0) len++; //最后进位可能会导致位数增加 for (int i=len;i>=1;i--) cout<<c[i]; return 0; }