跟测试数据一样,为啥过不了?
查看原帖
跟测试数据一样,为啥过不了?
525458
zwt949742982楼主2021/8/6 22:16
#include<stdio.h>
char a[2005],b[2005],c[4005],d[4005];
int main()
{
	int xxx;
	xxx='0';
	int judge=0;
	int x,y;
	scanf("%s%n",a,&x);scanf("%s%n",b,&y);y-=1;
	if(a[0]=='0'||b[0]=='0'){printf("0");return 0;}
	if(a[0]=='-'&&b[0]!='-')
	{
		for(int i=0;i<=2004;i++)a[i]=a[i+1];judge=1;x-=1;goto fi;
	}
	if(b[0]=='-'&&a[0]!='-')
	{
		for(int i=0;i<=2004;i++)b[i]=b[i+1];judge=1;y-=1;goto fi;
	}
	if(a[0]=='-'&&b[0]=='-')
	{
		for(int i=0;i<=2004;i++){a[i]=a[i+1];b[i]=b[i+1];}x-=1;y-=1;goto fi;
	}
	fi:
	int temp=0;int k=0;int l=0;
	for(int i=y-1;i>=0;i--,l++)
	{
		for(int j=x-1,k=1,temp=0;j>=0;j--,k++)
		{
			//c[k+y-1-i]+=((a[j]-48)*(b[i]-48)+temp)%10;
			//temp=(a[j]-48)*(b[i]-48)/10;printf("k=%d\tc[%d]=%d\n",k,k+y-1-i,c[k+y-1-i]);
			c[k+l]+=((a[j]-xxx)*(b[i]-xxx)+temp);
			temp=c[k+l]/10;
			c[k+l]=c[k+l]%10;
			if(j==0)c[k+l+1]+=temp;
		}
	
	
	}
	if(judge)printf("-");
	for(int i=4004;i>=0;i--)
	{
		if(c[i])
		{
			for(int j=i;j>0;j--)
			{d[i-j]=c[j]+48;
			}
			goto he;
			
		}
	}
	he:
		printf("%s",d);
	 return 0;
}

甚至考虑了负数,而且我输出跟测试数据2一样,但是第二个测试点没过???真的一样呀!

2021/8/6 22:16
加载中...