1.【题目描述】
【题目描述】
求两个不超过200位的非负整数的和。
【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
【输出】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
【输入样例】
22222222222222222222
33333333333333333333
【输出样例】
55555555555555555555
2.【代码】
#include<bits/stdc++.h>
using namespace std;
char al[202],bl[202];
int a[202],b[202],c[202],lena,lenb,lenc=1,i,x;
int main()
{
gets(al);//输入第一个数
gets(bl);//输入第二个数
lena=strlen(al);//取数的长度
lenb=strlen(bl);
for(i=0;i<=lena-1;i++)
a[lena-i]=al[i]-48;//将数存放入数组中
for(i=0;i<=lenb-1;i++)
b[lenb-i]=bl[i]-48;
while(lenc<=lena||lenc<=lenb)
{
c[lenc]=a[lenc]+b[lenc]+x;//求对应位置上的数
x=c[lenc]/10;//进位
c[lenc]%=10;//保留个位
lenc++;//长度增加
}
c[lenc]=x;//进位
while(c[lenc]==0&&lenc>1)//去除高位上的0
lenc--;
for(i=lenc;i>=1;i--)
cout<<c[i];
return 0;
}
仅供参考!