题目描述
求两数的积。
输入格式
两行,两个整数。
输出格式
一行一个整数表示乘积。
输入输出样例
输入 #1
1
2
输出 #1
2
说明/提示
每个数字不超过 10^(2000) ,需用高精。
代码如下:
#include<iostream>
#include<string>
using namespace std;
const int maxn = 10001;
int a[maxn], b[maxn], c[maxn];
int main() {
string s1, s2;
cin >> s1 >> s2;
// 将数组倒着存入数组
for(int i = 0; i < s1.size(); i++) {
a[i + 1] = s1[s1.size() - i - 1] - '0';
}
for(int i = 0; i < s2.size(); i++) {
b[i + 1] = s2[s2.size() - i - 1] - '0';
}
// 模拟乘法的计算过程
for(int i = 1; i <= s1.size(); i++) {
for(int j = 1; j <= s2.size(); j++) {
c[i + j - 1] += a[i] * b[j];
}
}
// 进行进位的操作
for(int i = 1; i <= s1.size() + s2.size(); i++) {
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
// 去除结果前面多余的0
int len = s1.size() + s2.size();
while(c[len] == 0 && len > 1) {
len--;
}
// 输出结果
for(int i = len; i >= 1; i--) {
cout << c[i];
}
cout << endl;
return 0;
}