题目描述
高精度加法,相当于 a+b problem,不用考虑负数。
输入格式
分两行输入。a,b≤10500a,b \leq 10^{500}a,b≤10500。
输出格式
输出只有一行,代表 a+ba+ba+b 的值。
输入输出样例
输入 #1
1
1
输出 #1
2
输入 #2
1001
9099
输出 #2
10100
思路:
如同我们手算一样,从最低位开始计算,对10取余作为当前一位,除以10向前进位。
用vector储存要倒着存。
代码:
#include<bits/stdc++.h>
using namespace std;
vector<int> add(vector<int>& A, vector<int>& B) {
if (A.size() < B.size()) return add(B, A);
vector<int> C;
int t = 0;
for (int i = 0; i < A.size(); i++) {
t += A[i];
if (i < B.size()) {
t += B[i];
}
C.push_back(t % 10);
t /= 10;
}
if (t)C.push_back(t);
return C;
}
int main() {
string a, b;
cin >> a >> b;
vector<int> A, B,C;
for (int i = a.size()-1; i >= 0; i--) A.push_back(a[i] - '0');
for (int i = b.size()-1; i >= 0; i--) B.push_back(b[i] - '0');
C = add(A, B);
for (int i = C.size()-1; i >= 0; i--) cout<<C[i];
return 0;
}