高精度

来源:互联网 发布:diy软件 编辑:程序博客网 时间:2024/04/29 20:37

高精度加法。新定义‘+’

#include<cstdio>
#include<cstring>
usingnamespace std;
structsd {
    intlen,d[300];
    //sd(){memset(d,0,sizeof(d));}
    sd operator + (constsd &x) const
     {
        sd c;intk=len>x.len?len:x.len;
        for(inti=0;i<k;i++)
          if(i<len && i<x.len)
             c.d[i]=d[i]+x.d[i];
          elseif (i>=len && i<x.len)
             c.d[i]=x.d[i];
          else
             c.d[i]=d[i];
        c.d[k]=0;
        for(inti=0;i<k;i++)
          {c.d[i+1]+=c.d[i]/10;c.d[i]%=10;}
        if(c.d[k]>0) c.len=k+1; elsec.len=k;           
        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;
}