题目描述
有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。
输入描述:
空格分隔的两个字符串,代表输入的两个大整数
输出描述:
输入的乘积,用字符串表示
示例1
输入
复制
72106547548473106236 982161082972751393
输出
复制
70820244829634538040848656466105986748
一次性 AC code 所以没修改。里面的数组应该用恒替换掉,不然代码太难看。
#include<iostream>
#include<string>
int a[101];
int b[101];
int res[10001];
using namespace std;
string mult(int a[],int b[]){
for(int i=0;i<101;++i){
for(int j =0;j<101;++j){
res[i+j] += a[i] * b[j];
}
}
for(int i =0;i<10000;++i){
a[i+1] += a[i] /10;
a[i] = a[i]% 10;
}
string s;
int j =10000;
while(res[j] == 0) j--;
for(;j>=0;j--){
s+=res[j] + '0';
}
return s;
}
int main()
{
string x,y;
cin>>x>>y;
for(int i= 0,j = x.size() - 1 ;i<x.size();++i,j--){
a[i] = x[j] -'0';
}
for(int i = 0,j = y.size() -1 ;i< y.size();++i,j--){
b[i] = y[j] - '0';
}
cout<<mult(a,b)<<endl;
return 0;
}