40分求助!
查看原帖
40分求助!
234783
conprour楼主2021/1/16 07:38

一直找不到错误,求大佬帮忙康康orz

#include<bits/stdc++.h>
using namespace std;
char n[105],m[105]; 
int a[1000],b[1000],c,ans[1000];
int main()
{
	scanf("%s%s",n+1,m+1);
	int ln=strlen(n+1),lm=strlen(m+1);

	for(int i=1;i<=ln;i++)
		a[i]=n[ln-i+1]-'0';
	for(int i=1;i<=lm;i++)
		b[i]=m[lm-i+1]-'0';
	int len1=min(ln,lm),len2=max(ln,lm);
	if(ln>lm) 
	for(int i=1;i<=len1;i++)
	{
		for(int j=1;j<=len2;j++)
		{
			ans[i+j-1]+=a[j]*b[i]+c;
			c=ans[i+j-1]/10;
			ans[i+j-1]%=10;
			
		}
			ans[i+len2]+=c;
		c=0;
	//	memset(c,0,sizeof(c));
	//	if(c!=0) ans[i+len2]=c,c=0; 
	}
	else 
	for(int i=1;i<=len1;i++)
	{
		for(int j=1;j<=len2;j++)
		{
			ans[i+j-1]+=a[i]*b[j]+c;
			c=ans[i+j-1]/10;
			ans[i+j-1]%=10;
		}
		ans[i+len2]+=c;
		c=0;
	//	if(c!=0) ans[i+len2]=c,c=0; 
	//memset(c,0,sizeof(c));
	}
	if(ans[ln+lm]!=0) ln++;
	for(int i=ln+lm-1;i>=1;i--)
	printf("%d",ans[i]);
	return 0;
}
2021/1/16 07:38
加载中...