P1601 A+B Problem(高精度)
题目描述
高精度加法,相当于a+b problem,不用考虑负数.
输入格式
分两行输入。a,b < 10^500
输出格式
输出只有一行,代表a+b的值
输入输出样例
输入 #1复制
1
1
输出 #1复制
2
输入 #2复制
1001
9099
输出 #2复制
10100
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
if(a.size() < b.size())
{
int n = b.size() - a.size(); //这一步小心,本来放在for循环里,但是随着a大小的改变,n的值也会改变,造成加0的数量不够
for(int i = 0; i < n; i++)
a += '0';
}
else
{
int n = a.size() - b.size();
for(int i = 0; i < n; i++)
b += '0';
}
int duo = 0;
for(int i = 0; i < a.size(); i++)
{
int num = a[i] - '0' + b[i] - '0' + duo;
if(num >= 10)
duo = 1;
else
duo = 0;
a[i] = num % 10 + '0';
}
if(duo)
cout << "1";
for(int i = a.size() - 1; i >= 0; i--)
cout << a[i];
}