题目链接:A*B Problem
题目背景
高精度乘法模板题。
题目描述
给出两个非负整数,求它们的乘积。
输入格式
输入共两行,每行一个非负整数。
输出格式
输出一个非负整数表示乘积。
样例 #1
样例输入 #1
1
2
样例输出 #1
2
提示
每个非负整数不超过 1 0 2000 10^{2000} 102000。
#include <bits/stdc++.h>
using namespace std;
int a[50001]={0};
int b[50001]={0};
int c[50001]={0};
int main() {
string s1;
string s2;
cin >> s1 >> s2;
int len1 = s1.length();
int len2 = s2.length();
for (int i = 0; i < len1; i++) {
a[len1 - 1 - i] = s1[i] - '0';
}
for (int i = 0; i < len2; i++) {
b[len2 - 1 - i] = s2[i] - '0';
}
for (int i = 0; i < len1; i++) {
for (int j = 0; j < len2; j++) {
c[i + j] += a[i] * b[j];
c[i + j + 1] += c[i + j] / 10;
c[i + j] %= 10;
}
}
int len3 = len1 + len2;
while (c[len3 - 1] == 0 && len3 > 1) {
len3--;
}
for (int i = len3 - 1; i >= 0; i--) {
cout << c[i];
}
return 0;
}