题目背景
无
题目描述
高精度加法,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 ;
}
还是比较简单明了的。