首页 > 其他 > 详细

【洛谷】P1303 A*B Problem(高精度乘法模板)

时间:2020-06-08 17:45:13      阅读:49      评论:0      收藏:0      [点我收藏+]

高精度乘法模板

P1303 A*B Problem

参考

参考高精度加法模板

代码

/* P1303 A*B Problem
 * 来源:洛谷
 * 作者:RainbowBird
 * 日期:2020年6月8日
 * 算法:高精度乘法
 */

#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;

int a[20005], b[20005], c[20005];
char stra[20005], strb[20005];

int main() {
    scanf("%s %s", &stra, &strb);
    int lena = strlen(stra);
    int lenb = strlen(strb);

    // 靠右对齐
    for (int i = lena; i > 0; i--)
        a[i] = stra[lena - i] - ‘0‘;
    for (int j = lenb; j > 0; j--)
        b[j] = strb[lenb - j] - ‘0‘;

    // 核心部分
    for (int i = 1; i <= lena; i++) {
        for (int j = 1; j <= lenb; j++) {
            c[i + j - 1] += a[i] * b[j];
        }
    }

    // 进位
    for (int i = 1; i < lena + lenb; i++) {
        if (c[i] >= 10) {
            c[i + 1] += c[i] / 10;
            c[i] %= 10;
        }
    }

    int flag = 0;
    for (int i = lena + lenb; i > 0; i--) {
        if (!flag && c[i] != 0)
            flag = 1;
        
        if (flag)
            printf("%d", c[i]); // 倒着输出
    }

    if (!flag)
        printf("%d", 0);

    return 0;
}

【洛谷】P1303 A*B Problem(高精度乘法模板)

原文:https://www.cnblogs.com/luoling8192/p/13066639.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!