题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
#include <algorithm> #include <iostream> #include <string> #include <vector> using namespace std; int main() { string str1,str2; cin >> str1 >> str2; string ans; //定义求和结果 vector<char> st1; vector<char> st2; for (auto it : str1) { st1.push_back(it); } for (auto it : str2) { st2.push_back(it); } int flag = 0; //进位标志位 while(st1.size() != 0 || st2.size() != 0) { int temp = 0; //暂时保存加和数据 if (st1.size() != 0) { char lastElement1 = st1.back(); //去除最后一个数 temp += lastElement1 - '0'; st1.pop_back(); //删除最后一个数 } if (st2.size() != 0) { char lastElement2 = st2.back(); temp += lastElement2 - '0'; st2.pop_back(); } //确定每一位的最后一个数 ans += ((temp + flag) % 10) + '0'; //确定进位 flag = (temp + flag) / 10; if (flag == 1 && st1.size() == 0 && st2.size() == 0) { ans += '1'; } } reverse(ans.begin(),ans.end()); cout << ans; } // 64 位输出请用 printf("%lld")