【题目描述】
求两个不超过200位的非负整数的和。
【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
【输出】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
【输入样例】
22222222222222222222
33333333333333333333
【输出样例】
55555555555555555555
解析如下
#include<bits/stdc++.h>
using namespace std;
int a[201],b[201],c[201];
char al[201],bl[201];
int main()
{
int la,lb,lc,x=0;
cin.getline(al,sizeof(al));
cin.getline(bl,sizeof(bl));
la=strlen(al);lb=strlen(bl);
for(int i=0;i<=la-1;i++)a[la-i]=al[i]-'0';
for(int i=0;i<=lb-1;i++)b[lb-i]=bl[i]-'0';
lc=1;
while(lc<=la||lc<=lb)
{
c[lc]=a[lc]+b[lc]+x;
x=c[lc]/10;
c[lc]%=10;
++lc;
}
c[lc]=x;
while(c[lc]==0&&lc>1)lc--;
for(int i=lc;i>=1;i--)
cout<<c[i];
return 0;
}