C++自存错题(14)

高精度乘法模板题。

题目描述
给出两个非负整数,求它们的乘积。

输入格式
输入共两行,每行一个非负整数。

输出格式
输出一个非负整数表示乘积。

输入输出样例
输入 #1复制

1
2
输出 #1复制

2
说明/提示
每个非负整数不超过 10 
2000
 。#include <iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<queue>
using namespace std;
int a[1000000], b[1000000], c[1000000];
string a1, b1;
int len = 0;
void ChengJ(string a1, string b1) {
    for (int i = 0; i < a1.size(); i++) {
        a[a1.size() - 1 - i] = a1[i] - '0';
    }
    for (int i = 0; i < b1.size(); i++) {
        b[b1.size() - 1 - i] = b1[i] - '0';
    }
    len = a1.size() + b1.size();
    for (int i = 0; i < a1.size(); i++) {
        for (int j = 0; j < b1.size(); j++) {
            c[i + j] += a[i] * b[j];
            c[i + j + 1] += c[i + j] / 10;
            c[i + j] %= 10;
        }
    }
    

}
int main() {
    cin >> a1 >> b1;
    if ((a1.size() == 1 && a1[0] == '0') || (b1.size() == 1 && b1[0] == '0')) {
        cout << 0;
        return 0;
    }
    ChengJ(a1, b1);
    for (int i = len-1; i >= 0; i--) {
        if (i == len-1 && c[i] == 0) {
            continue;
        }
        else {
            cout << c[i];
        }
    }
    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务