描述
高精度乘,求两个很大的非负整数相乘的结果。
这题的题目都说了数很大,所以必须用高精度来解决;首先可以特判一下,然后在模拟过程就行了;
下面出示代码:
#include <bits/stdc++.h>
using namespace std;
string s1,s2;
int a[30000000],b[3000000],c[30000000];
int main(){
getline(cin,s1);
getline(cin,s2);
if(s1=="0"||s2=="0"){//特判
cout<<0;
return 0;
}
int len=s1.size()+s2.size();
for(int i=0;i<s1.size();i++) a[s1.size()-i-1]=s1[i]-'0';
for(int i=0;i<s2.size();i++) b[s2.size()-i-1]=s2[i]-'0';
for(int j=0;j<s1.size();j++){
for(int i=0;i<s2.size();i++){
c[i+j]+=a[i]*b[j];
}
}
for(int i=0;i<len;i++){
if(c[i]>=10){
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
for(int i=len;i>=0;i--){
if(c[i]){
len=i;
break;
}
}
for(int i=len;i>=0;i--)cout<<c[i];
return 0;
}