题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string add1, add2;
cin >> add1 >> add2;
int N1 = add1.size();
int N2 = add2.size();
int l, k;
bool morel;
if (N1 > N2) {
l = N2;
k = N1;
morel = true;
} else {
l = N1;
k = N2;
morel = false;
}
int bs;
string res;
int advance = 0;
for (int i = 1; i <= l; i++) {
bs = add1[N1 - i] - '0' + add2[N2 - i] - '0' + advance;
if (bs >= 10) {
res += to_string(bs % 10);
advance = 1;
} else {
res += to_string(bs);
advance = 0;
}
}
for (int i = l + 1; i <= k; i++) {
if (morel) {
bs = add1[N1 - i] - '0' + advance;
if (bs >= 10) {
res += to_string(bs % 10);
advance = 1;
} else {
res += to_string(bs);
advance = 0;
}
} else {
bs = add2[N2 - i] - '0' + advance;
if (bs >= 10) {
res += to_string(bs % 10);
advance = 1;
} else {
res += to_string(bs);
advance = 0;
}
}
}
if (advance == 1) res += '1';
reverse(res.begin(), res.end());
cout << res;
}
// 64 位输出请用 printf("%lld")
模拟
#华为OD机试真题#