#include<iostream>
#include<string>
using namespace std;
int x[50000], y[50000], z[250000000]={0}, p=0;
//数组开到50000,支持50000位乘50000位的算式,代价就是占内存。
int main()
{
string a,b;
cin>>a>>b;//输入因数
for(int i=0; i<a.size(); i++){
x[i] = a[a.size()-i-1]-48;
}
for(int i=0; i<b.size(); i++){
y[i] = b[b.size()-i-1]-48;
}//这两步是把字符串转换成 数字,存在一个数组里。
//这样方便计算,但是如果不转换也可以,只是麻烦一些。
for(int i=0; i<a.size(); i++){
for(int j=0; j<b.size(); j++){
z[i+j] += x[i]*y[j];//将积存在另一个数组里。
while(z[i+j] > 9)
z[i+j]-=10,z[i+j+1]++;//进位
}
}
for(int i=a.size()+b.size()-1; i>=0; i--){ //输出
if(z[i]==0 && p==0 && i!=0)
continue;//判断最高位是否是0,如果是则不输出。
else
p=1;
cout<<z[i];
}
return 0;//最好还是返回一下,养成好习惯。
}
高精度乘法c++代码
最新推荐文章于 2024-10-05 11:02:16 发布