1307:【例1.3】高精度乘法
麦兜 / 2019-07-21 / 算法 / 阅读量 260

【题目描述】

输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。
【输入】

输入两个高精度正整数M和N。
【输出】

求这两个高精度数的积。
【输入样例】

36
3

【输出样例】

108

【来源】

No

思路:c[i+j]=a[i]b[j]+x+c[i+j] :ab项+进位+原数

参考代码:

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

int main()
{
    char a1[101], b1[101];
    int a[101] = { 0 }, b[101] = { 0 }, c[10000] = {0};
    cin >> a1 >> b1;
    int lena = strlen(a1);
    int lenb = strlen(b1);
    for (int i = 0; i < lena; i++)
        a[lena - i-1 ] = a1[i]-'0';
    for (int i = 0; i < lenb; i++)
        b[lenb - i-1] = b1[i]-'0';
    for (int i = 0; i < lena; i++)
    {
        int x = 0;
        for (int j = 0; j < lenb; j++)
        {
            c[i + j] = a[i] * b[j] + c[i + j]+x;
            x = c[i + j] / 10;
            c[i + j] = c[i + j] % 10;
        }
        c[i + lenb] = x;
    }
    int lenc = lena + lenb;
    while (c[lenc] == 0 && lenc > 0) {
        lenc--;
    }
    for (int i = lenc; i >= 0; i--) {
        cout << c[i];
    }
}
1 + 3 =
快来做第一个评论的人吧~