80分求助
查看原帖
80分求助
1111873
qiufangguo楼主2024/7/18 08:17
#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;
}
2024/7/18 08:17
加载中...