时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
求两个不超过200位的非负整数的和。
【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
【输出】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
【输入样例】
22222222222222222222
33333333333333333333
【输出样例】
55555555555555555555
#include<bits/stdc++.h>
using namespace std;
string a1,b1;
int a[205],b[205],c[205];
int main (){
cin>>a1>>b1;
int lena=a1.size(),lenb=b1.size();
for(int i=0;i<lena;i++)a[i]=a1[lena-i-1]-'0';//这次有注释
for(int i=0;i<lenb;i++)b[i]=b1[lenb-i-1]-'0';//倒存有助于计算
for(int i=0;i<lena || i<lenb;i++){
c[i]+=a[i]+b[i];//加等于有助于连加,此处随意
c[i+1]+=c[i]/10;//加等于有助于连加,此处随意
c[i]%=10;
}
bool f=0;//删除前导零
for(int i=max(lenb,lena)-1;i>-1;i--){
if(c[i]==0 && !f)continue;
cout<<c[i];
f=1;
}
return 0;
}
别看代码只有22行,还是很有效果的,全部4MS