不知道为什么都是错的
  • 板块P1303 A*B Problem
  • 楼主wan233
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/24 13:13
  • 上次更新2025/1/24 16:13:13
查看原帖
不知道为什么都是错的
1559187
wan233楼主2025/1/24 13:13
#include <stdio.h>
#include <string.h>
static int out[4010]={0};
void magnificientmultiply(char *a,char *b,int digita,int digitb ){
    int numbera[2010],numberb[2010],i=digita-1,j=digitb-1,m=0;
while(i>=0)
numbera[m++]=a[i--]-48;
m=0;
while(j>=0)
numberb[m++]=b[j--]-48;
	for(int x=0;x<digita;x++)
	for(int y=0;y<digitb;y++)
	out[x+y]+=numbera[x]*numberb[y];
	for(int x=0;x<digita+digitb;x++)
	if(out[x]>=10){
		out[x+1]+=out[x]/10;
		out[x]%=10;
                   	}
                                                                    }
	int main()               {
		char a[2010],b[2010];
		int digita,digitb;
        fgets(a,2010,stdin);
        fgets(b,2010,stdin);
         digita=strlen(a);
        digitb=strlen(b);
        a[digita-1]='\0';
  digita--;
  if(b[digitb-1]=='\n'){
  b[digitb-1]='\0';
  digitb--;}
	int digit=digita+digitb-1;
	magnificientmultiply(a,b,digita,digitb);
	if(out[digit]!=0)
	digit+=1;
	for(int i=digit-1;i>=0;i--)
	printf("%d",out[i]); }
2025/1/24 13:13
加载中...