题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
#include <iostream>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
int main() {
string str_1,str_2;
cin>>str_1>>str_2;
if (str_1.size() > str_2.size())
swap(str_1, str_2);
int len_1 = str_1.size(), len_2 = str_2.size();
vector<int> used(str_2.size() + 2);
reverse(str_1.begin(), str_1.end());
reverse(str_2.begin(), str_2.end());
string result;
for (int i = 0; i <= len_2; i++){
if (i < len_1){
int x = (str_1[i] - '0') + (str_2[i] - '0') + used[i];
if (x >= 10)
used[i + 1] = 1;
result += (x%10) + '0';
}
else if (i < len_2 && i >= len_1){
int x = (str_2[i] - '0') + used[i];
if (x >= 10)
used[i + 1] = 1;
result += (x%10) + '0';
}
else {
if (used[i] == 1)
result += 1 + '0';
}
}
reverse(result.begin(),result.end());
cout <<result;
}
// 64 位输出请用 printf("%lld")

查看3道真题和解析