/* 思路:用字符串来模拟加法运算, 注意进位情况的考虑, 小技巧:短字符串前面补0的操作 */ #include <algorithm> #include <iostream> #include <string> using namespace std; int main() { string str1, str2; cin >> str1 >> str2; int len1 = str1.length(); int len2 = str2.length(); // 两个整数位数不一致,短的在前面补0 int diff = 0; if(len1 < len2){ diff = len2 - len1; for(int i = 0; i < diff; i++){ str1 = '0' + str1; } }else { diff = len1 - len2; for(int i = 0; i < diff; i++){ str2 = '0' + str2; } } reverse(str1.begin(), str1.end()); reverse(str2.begin(), str2.end()); len1 = str1.length(); len2 = str2.length(); int carry = 0; string ans; int i = 0, j =0; for(; i < len1 && j < len2; i++,j++){ int sum = (str1[i] - '0') + (str2[j] - '0') + carry ; if( sum >= 10){ carry = 1; ans += to_string(sum%10); }else{ carry = 0; ans += to_string(sum); } } if(carry){ ans += to_string(carry); } reverse(ans.begin(), ans.end()); cout << ans << endl; return 0; } // 64 位输出请用 printf("%lld")