A*B 大数

来源:互联网 发布:网络安全教育黑板报 编辑:程序博客网 时间:2024/06/01 21:03

/*A*B*/
#include<cstdio>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#define M 1000000
int main()
{
  int T;
  scanf("%d",&T);
  while(T--)
  {
   
    char *a,*b;
 a=(char*)malloc(sizeof(char)*M);
 b=(char*)malloc(sizeof(char)*M);
    scanf("%s%s",a,b);
   int i,j,k,alen,blen;
   int *c;
   char *ret;
    alen=strlen(a);
    blen=strlen(b);
   
 c=(int*)malloc(sizeof(int)*(alen+blen));
 for(i=0;i<alen+blen;i++)
      c[i]=0;
 
  for(i=0;i<alen;i++)
    for(j=0;j<blen;j++)
      c[i+j+1]+=(a[i]-'0')*(b[i]-'0'); 
   
   for(i=alen+blen-1;i>=0;i--)
      if(c[i]>9)
      {
      c[i-1]+=c[i]/10;
      c[i]%=10;
      }
    
       i=0;
       while(c[i]==0)//跳过头部的0
         i++;
     
      ret=(char*)malloc(sizeof(char)*(alen+blen));
         for(j=0;i<alen+blen;i++,j++)
           ret[j]=c[i]+'0';
           ret[j]='\0';
   free(a);
   free(b);
   free(c);
         
  for(i=0;i<alen+blen;i++)
    printf("%c",ret[i]);
    printf("\n");
   free(ret); 
  }
 return 0;
}

 

/*
#include<cstdio>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#define M 1000000

void mul(char*a,char*b)
{
 int i,j,k,alen,blen;
   int *c;
   char *ret;
    alen=strlen(a);
    blen=strlen(b);
   
 c=(int*)malloc(sizeof(int)*(alen+blen));
 for(i=0;i<alen+blen;i++)
      c[i]=0;
 
  for(i=0;i<alen;i++)
    for(j=0;j<blen;j++)
      c[i+j+1]+=(a[i]-'0')*(b[i]-'0'); 
   
   for(i=alen+blen-1;i>=0;i--)
    {
      if(c[i]>9)
      {
      c[i-1]+=c[i]/10;
      c[i]%=10;
      }
       }
    
       i=0;
       while(c[i]==0)//跳过头部的0
         i++;
     
      ret=(char*)malloc(sizeof(char)*(alen+blen));
         for(j=0;i<alen+blen;i++,j++)
           ret[j]=c[i]+'0';
           ret[j]='\0';
     free(c);
     for(i=0;i<alen+blen;i++)
    printf("%c",ret[i]);
    printf("\n");
   free(ret);
}
int main()
{
 char *a,*b;
 a=(char*)malloc(sizeof(char)*M);
 b=(char*)malloc(sizeof(char)*M);
 int T;
 scanf("%d",&T);
 while(T--)
 {
  scanf("%s%s",a,b);
  mul(a,b);
  free(a);
  free(b); 
 }
 return 0;
}
*/

0 0
原创粉丝点击