一、题目描述
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
提示
20 % 20\% 20% 的测试数据, 0 ≤ a , b ≤ 1 0 9 0\le a,b \le10^9 0≤a,b≤109;
40 % 40\% 40% 的测试数据, 0 ≤ a , b ≤ 1 0 18 0\le a,b \le10^{18} 0≤a,b≤1018。
二、参考代码
#include <iostream>
#include <string>
#include <algorithm>
#include <math.h>
#include <iomanip>
using namespace std;
int main(){
string s1, s2;
int a1[200] = { 0 }, a2[200] = { 0 }, a3[200] = { 0 };
cin >> s1 >> s2;
for (int i = 0; i < s1.size(); i++)
{
a1[s1.size() - i - 1] = s1[i] - '0';
}
for (int i = 0; i < s2.size(); i++)
{
a2[s2.size() - i - 1] = s2[i] - '0';
}
int len = max(s1.size(), s2.size());
for (int i = 0; i < len; i++)
{
a3[i] = a1[i] + a2[i];
}
for (int i = 0; i < len; i++)
{
if (a3[i] >= 10)
{
a3[i + 1] = a3[i + 1] + a3[i] / 10;
a3[i] = a3[i] % 10;
}
}
if (a3[len] != 0)
{
len++;
}
for (int i = len-1; i >= 0; i--)
{
cout << a3[i];
}
return 0;
}