高精度乘法
XUER_WANG
·
·
个人记录
#include<bits/stdc++.h>
using namespace std;
const int N=500000;
int a[N],b[N],ans[N];
string s1,s2;
void muilt(){
int x1=s1.length(),x2=s2.length();
for(int i=1;i<=x1;i++){
int tmp=0;
for(int j=1;j<=x2;j++){
int all=a[i]*b[j];
ans[i+j-1]+=all;
}
}
for(int i=1;i<x1+x2;i++){
int tmp=ans[i];
ans[i]=tmp%10;
tmp/=10;
ans[i+1]+=tmp;
}
}
int toInt(string s1,string s2){
for(int i=s1.length()-1;i>=0;i--){
a[s1.length()-i]=s1[i]-'0';
}
for(int i=s2.length()-1;i>=0;i--){
b[s2.length()-i]=s2[i]-'0';
}
// for(int i=1;i<=s1.length();i++){
// cout<<a[i];
// }
// cout<<endl;
// for(int i=1;i<=s2.length();i++){
// cout<<b[i];
// }
// cout<<endl;
muilt();
}
int main(){
cin>>s1>>s2;
toInt(s1,s2);
int t=4500;
while(ans[t]==0)t--;
// cout<<t<<endl;
for(int i=t;i>=1;i--){
cout<<ans[i];
}
}