A+B Problem(高精)
题目描述
高精度加法,相当于 a+b problem,不用考虑负数。
输入格式
分两行输入。 a , b ≤ 1 0 500 a,b \leq 10^{500} a,b≤10500。
输出格式
输出只有一行,代表 a + b a+b a+b 的值。
样例 #1
样例输入 #1
1
1
样例输出 #1
2
样例 #2
样例输入 #2
1001
9099
样例输出 #2
10100
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
int c[505],n;
cin>>a>>b;
int j1[505]={0},j2[505]={0},jw=0;
int lena=a.length(),lenb=b.length() ,len=max(lena,lenb);
// 将字符数组转换成int类型
for(int i=0;i<lena;i++) j1[i]=a[i]-'0';
for(int i=0;i<lenb;i++) j2[i]=b[i]-'0';
//数组翻转
for(int i=0;i<lena/2;i++) swap(j1[i],j1[lena-i-1]);
for(int i=0;i<lenb/2;i++) swap(j2[i],j2[lenb-i-1]);
//ÇóºÍ
for(int i=0;i<len;i++)
{
c[i]=j1[i]+j2[i]+jw;
jw = c[i]/10;
c[i]=c[i]%10;
}
if(jw>0)
{
c[len]=jw;
len++;
}
for(int i=len-1;i>=0;i--)
{
cout<<c[i];
}
return 0;
}
也可以边翻转边转换
//将字符串转成int数组并翻转
for(int i=0;i<lena;i++) j1[i]=a[lena-1-i]-'0';
for(int i=0;i<lenb;i++) j2[i]=b[lena-1-i]-'0';