1168:大整数加法
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 65202 通过数: 21507
【题目描述】
求两个不超过200位的非负整数的和。
【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
【输出】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
【输入样例】
22222222222222222222
33333333333333333333
【输出样例】
55555555555555555555
#include<iostream>
#include<string>
using namespace std;
int main(){
string a_,b_;
int a[1005]={0},b[1005]={0},c[1005]={0};
cin>>a_>>b_;
int al=a_.length();
int bl=b_.length();
for (int i=0;i<=al;i++){
a[al-i]=a_[i]-'0';
}
for (int i=0;i<=bl;i++){
b[bl-i]=b_[i]-'0';
}
int i=0,x=0;
while((al>=i)||(bl>=i)){
c[i]=a[i]+b[i]+x;
x=c[i]/10;
if (x<=0){
x=0;
}
c[i]%=10;
//cout<<c[i]<<a[i]<<b[i]<<x<<endl;
i++;
}
if (x!=0){
c[i+1]=x;
}
int g=1005;
while (c[g]==0){
g--;
//cout<<c[g];
}
for (int i=g;i>=1;i--){
cout<<c[i];
}
}