Liuzr20 @ 2024-10-06 20:13:00
#include<bits/stdc++.h>
using namespace std;
void bs(int ee,int xx[],string yy){
for(int k=0;k<ee;k++){
xx[k]=yy[k]-48;
}
}
void jh(int aa,int bb[]){
for(int k=0;k<aa/2;k++){
swap(bb[k],bb[aa-1-k]);
}
}
int main( ){
string a,b;
int c[100],d[100],e[100];
int f,g,h;
int x,y,z;
cin>>a>>b;
if(a=="0"||b=="0"){
cout<<"0";
return 0;
}
f=a.length();
g=b.length();
if(f>g){
h=f*2;
}else{
h=g*2;
}
for(int i=0;i<100;i++){
c[i]=0;
d[i]=0;
e[i]=0;
}
bs(g,c,a);
bs(h,d,b);
jh(g,c);
jh(h,d);
for(int i=0;i<g;i++){
for(int j=0;j<f;j++){
e[i+j]+=d[i]*c[j];
}
}
for(int i=0;i<h;i++){
e[i+1]+=e[i]/10;
e[i]%=10;
}
for(h;h>-1;h--){
if(e[h]!=0){
h++;
break;
}
}
jh(h,e);
for(int j=0;j<h;j++){
cout<<e[j];
}
return 0;
}
by fu1013 @ 2024-10-15 21:39:47
高精度乘法模板就是这个了,最标准的
#include <bits/stdc++.h>
using namespace std;
int a[2001],b[2001],c[4002];
char a1[2001],b1[2001];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>a1>>b1;
int i = 0;
int la = strlen(a1);
int lb = strlen(b1);
for (i = 0; i < la; i++)a[la - 1 - i] = a1[i] - 48;
for (i = 0; i < lb; i++)b[lb - 1 - i] = b1[i] - 48;
int m = la + lb ;
for (int i = 0; i < la; i++) {
for (int j = 0; j < lb; j++) {
c[i + j] += a[i] * b[j];
}
}
for (int i = 0; i < m; i++) {
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
while (c[m] == 0 && m >= 1)m--;
for (i = m; i >= 0; i--){
cout<<c[i];
}
return 0;
}