题目背景
高精度乘法模板题。
题目描述
给出两个非负整数,求它们的乘积。
输入格式
输入共两行,每行一个非负整数。
输出格式
输出一个非负整数表示乘积。
输入输出样例
输入 #1复制
1 2
输出 #1复制
2
说明/提示
每个非负整数不超过 102000102000
res:
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
string a, b;
cin >> a >> b;
vector<int> vec(0x3f3f3f);
vector<int> veca(a.size());
vector<int> vecb(b.size());
for (int i = 0; i < a.size(); i++) {
veca[a.size() - i - 1] = a[i] - '0';
}
for (int i = 0; i < b.size(); i++) {
vecb[b.size() - i - 1] = b[i] - '0';
}
for (int i = 0; i < veca.size(); i++) {
for (int j = 0; j < vecb.size(); j++) {
vec[i + j] += veca[i] * vecb[j];
}
}
int len = veca.size() * vecb.size();
for (int i = 0; i < len; i++) {
vec[i + 1] += vec[i] / 10;
vec[i] %= 10;
}
bool flag = 0;
for (int i = 0; i < len; i++) {
if (vec[len - i - 1] != 0) {
flag = 1;
}
if (flag == 1) {
cout << vec[len - i - 1];
}
}
if (flag == 0) {
cout << 0 << endl;
}
return 0;
}
/*
514
495
254430
*/