1 条题解
-
0
题解文字教学
当数字长度可能极大(如 500 位)时,普通整数类型无法存储,需要用高精度加法:
- 用字符串读入两个大数。
- 将字符串倒序转为整型数组(个位在数组下标 0 处),方便从低位向高位运算。
- 逐位相加,同时处理进位。
- 最后倒序输出结果数组,忽略前导零。
(若结果恰好为零,应输出一个 0。)
复杂度 O(len),len ≤ 500,完全可行。
参考代码
#include <bits/stdc++.h> using namespace std; int main() { string s1, s2; cin >> s1 >> s2; int a[505] = {0}, b[505] = {0}, c[505] = {0}; int l1 = s1.size(), l2 = s2.size(); for (int i = 0; i < l1; ++i) a[i] = s1[l1 - 1 - i] - '0'; for (int i = 0; i < l2; ++i) b[i] = s2[l2 - 1 - i] - '0'; int car = 0, len = max(l1, l2); for (int i = 0; i < len; ++i) { int sum = a[i] + b[i] + car; c[i] = sum % 10; car = sum / 10; } if (car) c[len++] = car; while (len > 1 && c[len - 1] == 0) --len; for (int i = len - 1; i >= 0; --i) cout << c[i]; cout << endl; return 0; }
- 1
信息
- ID
- 589
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 6
- 已通过
- 4
- 上传者
京公网安备 11011102002149号