题解 | 高精度整数加法
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
#include <iostream> #include <string> #include <algorithm> // 用于 reverse 函数 using namespace std; // 函数:计算两个超大整数的和 string addLargeNumbers(const string& a, const string& b) { string result; // 存储结果 int carry = 0; // 进位 int i = a.length() - 1; // 从 a 的末尾开始 int j = b.length() - 1; // 从 b 的末尾开始 // 从最低位开始逐位相加 while (i >= 0 || j >= 0 || carry) { int sum = carry; // 当前位的和初始化为进位值 // 如果 a 还有未处理的位,加上当前位 if (i >= 0) { sum += a[i] - '0'; // 将字符转换为数字 i--; } // 如果 b 还有未处理的位,加上当前位 if (j >= 0) { sum += b[j] - '0'; // 将字符转换为数字 j--; } // 计算当前位的值和进位 carry = sum / 10; // 进位 sum %= 10; // 当前位的值 // 将当前位的值添加到结果中 result.push_back(sum + '0'); // 将数字转换为字符 } // 反转结果字符串,因为我们是从最低位开始计算的 reverse(result.begin(), result.end()); return result; } int main() { string a, b; cin >> a >> b; // 输入两个超大整数 string sum = addLargeNumbers(a, b); // 计算它们的和 cout << sum << endl; // 输出结果 return 0; }