题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
#include <algorithm> #include <iostream> #include <iterator> #include <string> #include <vector> using namespace std; int main() { string str1, str2; cin >> str1 >> str2; int maxLen = max(str1.length(), str2.length()); int minLen = min(str1.length(), str2.length()); string addition;//补零的位数 for(int i = 0; i < maxLen - minLen; i++){ addition += '0'; } if(str1.length() > str2.length()) str2 = addition + str2;//往位数小的数高位补零 else if(str2.length() > str1.length()) str1 = addition + str1; vector<int> vec; int carry = 0;//每次运算的进位 for(int i = maxLen - 1; i >= 0; i--){ int sum = str1[i] - '0' + str2[i] - '0' + carry; vec.push_back(sum % 10); carry = sum / 10; } if(carry != 0) vec.push_back(carry);//最高位可能也有进位 reverse(vec.begin(), vec.end()); for(int it : vec) cout << it; return 0; }