题解 | #高精度整数加法#
高精度整数加法
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")