题目描述 Description
给出两个正整数A和B,计算A*B的值。保证A和B的位数不超过500位。
输入描述 Input Description
读入两个用空格隔开的正整数
输出描述 Output Description
输出A*B的值
样例输入 Sample Input
3 12
样例输出 Sample Output
36
数据范围及提示 Data Size & Hint
两个正整数的位数不超过500位
代码
#include <iostream>
#include <cstring>
using namespace std;
char v1[1000];
char v2[1000];
int mul[1000];
void mulBigInteger(){
int len1, len2, len, lenm = 0;
int t1, t2, i, j;
bool flag = false;
len1 = strlen(v1);
len2 = strlen(v2);
if(len1 < len2){
swap(len1, len2);
swap(v1, v2);
}
for(i = 1; i <= len2; ++i){
t2 = v2[len2 - i] - '0';
for(j = 1; j <= len1; ++j){
t1 = v1[len1 - j] - '0';
len = j + i - 2;
mul[len] += t1 * t2;
while(mul[len] >= 10){
mul[len + 1] += mul[len] / 10;
mul[len] %= 10;
flag = true;
++len;
}
lenm = max(len, lenm);
}
}
if(flag){
len = lenm;
}
for(i = len; i >= 0; --i){
cout << mul[i];
}
}
int main(){
cin >> v1 >> v2;
mulBigInteger();
cout << endl;
return 0;
}