题目背景

题目描述

高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b]

输入输出格式

输入格式:

分两行输入a,b<=10^500

输出格式:

输出只有一行,代表A+B的值

输入输出样例

输入样例#1:

1
1
输出样例#1:

2

附上代码:
    #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>//不要问我为什么这么多头文件 闲的
using namespace std;
char a1[],b1[];
int a[],b[],c[];
int main()
{
scanf("%s",a1);scanf("%s",b1);//scanf就爆0!
if(a1[]==&&b1[]==)
{
cout<<""<<endl;
return ;
}
int lena=strlen(a1),lenb=strlen(b1);
for(int i=;i<lena;i++)
{
a[lena-i-]=int(a1[i]-);
}
for(int i=;i<lenb;i++)
{
b[lenb-i-]=int(b1[i]-);//倒序输入便于进位
}
int m=max(lena,lenb);
for(int i=;i<m;i++)
{
c[i]+=a[i]+b[i];//不能直接赋值,要加上前面的进位
while(c[i]>=)
{
c[i+]++;
c[i]-=;
}
}
m++;
while(c[m]==) m--; //删除前导0
for(int i=m;i>=;i--)
cout<<c[i];
cout<<endl;
return ;
}

还是比较简单明了的。

04-27 03:48