TB椰程 TypeBuddy 打字搭子

高精度加法

CSP-J · 编程模板 · 片段 · cpp · 难度 4/5 · 共 568 字

字符串倒序存位,逐位相加进位

  • 高精度
  • 字符串

前置内容

正文

// ── 高精度加法 ──
// 数太大时用数组模拟竖式
// 数字倒着存:个位放下标 1
int a[505], b[505], c[505];
int la = strlen(s), lb = strlen(t);
// 字符转数字并倒序
for (int i = 0; i < la; i++)
    a[la - i] = s[i] - '0';
for (int i = 0; i < lb; i++)
    b[lb - i] = t[i] - '0';
// 结果位数至少是较长的那个
int lc = la > lb ? la : lb;
for (int i = 1; i <= lc; i++) {
    // 按位相加(含上一位进位)
    c[i] += a[i] + b[i];
    // 满 10 向上进位
    c[i + 1] += c[i] / 10;
    // 本位只留个位
    c[i] %= 10;
}
// 最高位还有进位 → 位数 +1
if (c[lc + 1] > 0) lc++;
// 倒存正出
for (int i = lc; i >= 1; i--)
    printf("%d", c[i]);
// 减法/乘法同套路
// 乘法的进位是累加不是覆盖

CSP-J · 编程模板的其它内容

打字首页 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK