qiufangguo @ 2024-07-18 08:17:18
#include<bits/stdc++.h>
using namespace std;
char s1[2005],s2[2005];
int a[2005],b[2005],c[2005],x;
int main(){
int la,lb,lc;
scanf("%s",s1);
scanf("%s",s2);
la=strlen(s1);
lb=strlen(s2);
for(int i=0;i<la;i++)
a[la-i]=s1[i]-'0';
for(int i=0;i<lb;i++)
b[lb-i]=s2[i]-'0';//字符串转数字+反转对齐数位
lc=la+lb;//积的长度(极端情况)
for(int i=1;i<=la;i++){
x=0;
for(int j=1;j<=lb;j++){
c[i+j-1]+=a[i]*b[j]+x;//乘数a的第i位*乘数b的第j位=乘数c的i+j-1位
x=c[i+j-1]/10;//进位
c[i+j-1]%=10;
}
c[i+lb]=x;
}//模拟竖式
while(c[lc]==0&&lc>1)lc--;//去0
for(int i=lc;i>=1;i--)printf("%d",c[i]);//输出
return 0;
}
by fuyi_fox @ 2024-07-18 08:59:30
两个因数最大
by qiufangguo @ 2024-07-18 09:56:14
@fuyi_fox 谢谢,AC了