高精度乘法

来源:互联网 发布:伤感好听的网络歌曲 编辑:程序博客网 时间:2024/06/03 03:37

高精度乘法

新定义‘*’

#include<cstdio>
#include<cstring>
usingnamespace std;
structsd {
    intlen,d[300];
    //sd(){memset(d,0,sizeof(d));}
    sd operator * (constsd &x) const
    {
        sd c;
        for(inti=0;i<300;i++) c.d[i]=0;
        for(inti=0;i<len;i++)
           for(intj=0;j<x.len;j++)
          {
           c.d[i+j]+=d[i]*x.d[j];
           c.d[i+j+1]+=c.d[i+j]/10;
           c.d[i+j]%=10;
          }
        for(inti=0;i<=len-1+x.len-1;i++)
       {
        c.d[i+1]+=c.d[i]/10;
        c.d[i]%=10;
       }
        if(c.d[len+x.len-1]>0) c.len=len+x.len; elsec.len=len+x.len-1;
        returnc;  
    }
};
voidready(sd &x)
{
   charst[300];scanf("%s",st);
   x.len=strlen(st);intj=0;
   for(inti=x.len-1;i>=0;i--)
     {x.d[j]=st[i]-48;j++;}
}
intmain()
{
  sd x1,x2,s;ready(x1);ready(x2);
  s=x1*x2;
  for(inti=s.len-1;i>=0;i--)
    printf("%d",s.d[i]);
  printf("\n"); 
  return0;
}

原创粉丝点击