题解 | 高精度整数加法
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
string s1;
string s2;
cin >> s1 >> s2;
int maxlen = max(s1.length(), s2.length());
string longstr, shortstr;
vector<int> up(maxlen, 0);
vector<int> down(maxlen, 0);
if(maxlen == s1.length()){
longstr = s1;
shortstr = s2;
}else {
longstr = s2;
shortstr = s1;
}
for(int i = 0; i < maxlen; i++){
up[i] = longstr[i] - '0';
}
int t = maxlen - shortstr.length();
for(int i = t; i < maxlen; i++){
down[i] = shortstr[i - t] - '0';
}
// vector<int> res(maxlen + 1, 0);
int n0 = 0;
for(int i = maxlen - 1; i >= 0; i--){
int x = up[i] + down[i];
if(x < 10){
up[i] = x;
continue;
}
int a = x % 10;
int b = x / 10;
if(i == 0){
n0 = b;
up[i] = a;
}else{
up[i - 1] += b;
up[i] = a;
}
}
if(n0 != 0) cout << n0;
for(int i = 0; i < maxlen; i++){
cout << up[i];
}
}
// 64 位输出请用 printf("%lld")
