用数组模拟加法运算即可。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
//加法
vector<int> add(vector<int> &A, vector<int> &B) {
vector<int> C; //保存答案,依然是从各位开始保存
//t保存进位
for(int i = 0, t = 0; i < A.size() || i < B.size() || t; i++) { //或t的作用是方便最后进位保存至结果中
if(i < A.size()) {
t += A[i];
}
if(i < B.size()) {
t += B[i];
}
C.push_back(t % 10); //压入本位数字
t /= 10; //计算进位
}
return C;
}
int main() {
string a, b;
cin >> a >> b;
//将a和b保存到数组中,且从个位开始保存,即数组下标0~a分别保存到的个位~最高位的值
vector<int> A;
for(int i = a.size() - 1; i >= 0; i--) {
A.push_back(a[i]-'0');
}
vector<int> B;
for(int i = b.size() - 1; i >= 0; i--) {
B.push_back(b[i]-'0');
}
vector<int> res = add(A, B);
for(int i = res.size() - 1; i >= 0; i--) {
cout << res[i];
}
cout << endl;
return 0;
}