大整数乘法

#include<stdio.h>
#include<string.h>
#define MAX_LEN 200
int an1[MAX_LEN+10];
int an2[MAX_LEN+10];
int asult[MAX_LEN*2+10];
char Line1[MAX_LEN+10];
char Line2[MAX_LEN+10];
int main()
{
 int i,j,nLine1,nLine2,t;
 scanf("%d",&t);
 getchar();
 while(t--)
 {
  gets(Line1);
  gets(Line2);
  memset(an1,0,sizeof(an1));
  memset(an1,0,sizeof(an1));
  memset(asult,0,sizeof(asult));
 
  nLine1=strlen(Line1);
  nLine2=strlen(Line2);
  j=0;
  for(i=nLine1-1;i>=0;i--)
   an1[j++]=Line1[i]-'0';
  j=0;
  for(i=nLine2-1;i>=0;i--)
   an2[j++]=Line2[i]-'0';
  for(i=0;i<nLine2;i++)
   for(j=0;j<nLine1;j++)
    asult[i+j]+=an1[j]*an2[i];
   for(i=0;i<MAX_LEN*2;i++)
   {
    if(asult[i]>=10)
    {
     asult[i+1]+=asult[i]/10;
     asult[i]=asult[i]%10;
    }
   }
   bool bStartOutput=false;
   for(i=MAX_LEN*2;i>=0;i--)
   {
    if(bStartOutput)
     printf("%d",asult[i]);
    else if(asult[i])
    {
     printf("%d",asult[i]);
     bStartOutput=true;
    }
   }
   if(!bStartOutput)
    printf("0");
   printf("\n");
 }
 return 0;
}


 

你可能感兴趣的:(大整数乘法)