在生活中总会用到加法,但是在c++中,以下这种代码只可以实现低位a*b,位数一旦多了,那么结果就会有偏差。
#include<bits/stdc++.h> //万能头文件
using namespace std;
int main()
{
cin>>a>>b; //输入
cout<<a*b<<endl; //输出
return 0;
}
如果你想要实现位数多的两个数相乘,那么这个时候就可以用到“高精度”了
#include <iostream>
using namespace std;
string as,bs;
int a[2005],b[2005],c[5005],d[5005],x=0,j=0;
int main(){
cin>>as>>bs;
int asize=as.size();
int bsize=bs.size();
for(int i=1;i<=asize;i++){
a[i]=(int)as[asize-i]-48;
}
for(int i=1;i<=bsize;i++){
b[i]=(int)bs[bsize-i]-48;
}
for(int i=1;i<=asize;i++){
for(int j=1;j<=bsize;j++){
c[i+j-1]+=a[i]*b[j];
c[i+j]+=c[i+j-1]/10;
c[i+j-1]=c[i+j-1]%10;
}
}
for(x=5000;x>0;x--){
if(c[x]>0){
break;
}
}
if(x>0){
for(;x>=1;x--){
cout<<c[x];
}
}
else{
cout<<"0";
}
return 0;
}