TB椰程 TypeBuddy 打字搭子

高精度乘低精度

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

大整数乘小整数,逐位乘并循环处理进位

  • 算法
  • 高精度乘低精度

前置内容

正文

// 高精度 × 低精度
// 大整数(数组存)乘小整数
// 逐位乘,进位累加即可
// 进位可能 >9,循环处理
#include <cstdio>
#include <cstring>
char s[505];
int a[505], n, len;
int main() {
    scanf("%s%d", s, &n);
    len = strlen(s);
    // 低位在前存数字
    for (int i = 1; i <= len; i++)
        a[i] = s[len - i] - '0';
    // 逐位相乘并累加进位
    for (int i = 1; i <= len; i++) {
        a[i] = a[i] * n + a[0];
        // 进位留给下一位
        a[0] = a[i] / 10;
        a[i] %= 10;
    }
    // 最高位可能仍有进位
    while (a[0]) {
        a[++len] = a[0] % 10;
        a[0] /= 10;
    }
    // 倒序输出每位
    for (int i = len; i >= 1; i--)
        printf("%d", a[i]);
    return 0;
}

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

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