1168:大整数加法
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 75354 通过数: 25185
【题目描述】
求两个不超过200位的非负整数的和。
【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
【输出】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
【输入样例】
22222222222222222222
33333333333333333333
【输出样例】
55555555555555555555
和往常的A+B不同,需要高精度来应对大数据
#include<bits/stdc++.h> //万恶之源
using namespace std;
int main()
{
char a[202]={0},b[202]={0};
scanf("%s%s",a,b);
int alen=strlen(a),blen=strlen(b),t=0,i;
int a1[202]={0},b1[202]={0};//设置
for(i=0;i<alen;i++)
a1[i]=a[alen-1-i]-'0';
for(i=0;i<blen;i++)
b1[i]=b[blen-1-i]-'0';
alen=(alen>blen)?alen:blen;//转换成数字数组
for(i=0;i<=alen;i++)
t=a1[i]+b1[i],a1[i]=t%10,a1[i+1]+=t/10;//计算
while(!a1[i]&&i) i--;
for(;i>=0;i--)
printf("%d",a1[i]);//输出
return 0;
}