原理
就是模仿手算如何实现加法的方式,同时对于其存储采用逆序存储,即最左边是低位,而右边是高位,这样方便进位处理
代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int>add(vector<int>& A, vector<int>& B) {//A与B之间都是逆序存储的,方便进位扩充空间
if (A.size() < B.size())return add(B, A);
int carry = 0;
vector<int>C;
for (int i = 0;i < A.size();i++) {
carry += A[i];
if (i < B.size())carry += B[i];
C.emplace_back(carry % 10);
carry /= 10;
}
if (carry)C.emplace_back(carry);
return C;
}
int main() {
string a, b;
cin >> a;
cin >> b;
vector<int>A, B;
for (auto num : a) {
A.emplace_back(num - '0');
}
reverse(A.begin(), A.end());
for (auto num : b) {
B.emplace_back(num - '0');
}
reverse(B.begin(), B.end());
vector<int>ans = add(A, B);
reverse(ans.begin(), ans.end());
for (auto num : ans)cout << num;
return 0;
}