总时间限制:
1000ms
内存限制:
65536kB
描述
求两个不超过200位的非负整数的和。
输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
思路
开两个一维数组,再一位一位加。
代码
#include<bits/stdc++.h>
using namespace std;
int main() {
string a,b;
cin>>a>>b;
int a1[1001]= {0},b1[1001]= {0},c1[1001]= {0};
for(int i=1; i<=a.size(); i++)
a1[a.size()-i+1]=(int)(a[i-1]-48);
for(int i=1; i<=b.size(); i++)
b1[b.size()-i+1]=(int)(b[i-1]-48);
for(int i=1; i<=max(a.size(),b.size()); i++) {
c1[i]=a1[i]+b1[i]+c1[i];
if(c1[i]>=10) {
c1[i+1]++;
c1[i]-=10;
}
}
int i=202;
bool p=0;
for(; i>=1; i--)
if(c1[i]>0) {
for(int j=i; j>0; j--)
cout<<c1[j];
p=1;
break;
}
if(i=1&&p==0)
cout<<0;
return 0;
}