j结构体高精加乘除(除法为对int型的)
函数放在外面了
const int base=10000; struct bigint { int d[base]; void clear() { memset(d,0,sizeof(d)); } }; inline bigint operator +(const bigint &a,const bigint &b) { bigint c; c.clear(); c.d[0]=max(a.d[0],b.d[0]); for(int i=1;i<=c.d[0];i++) { c.d[i]+=a.d[i]+b.d[i]; c.d[i+1]=c.d[i]/base,c.d[i]%=base; } if(c.d[c.d[0]+1]) c.d[0]++; return c; } inline bigint operator *(const bigint &a,const bigint &b) { bigint c; c.clear(); c.d[0]=a.d[0]+b.d[0]-1; for(int i=1;i<=a.d[0];i++) for(int j=1;j<=b.d[0];j++) { c.d[i+j-1]+=a.d[i]*b.d[j]; c.d[i+j]+=c.d[i+j-1]/base; c.d[i+j-1]%=base; } if(c.d[c.d[0]+1]) c.d[0]++; return c; } inline bigint operator / (const bigint &a,const int b) { bigint c; c.clear(); int ns=0; for(int i=a.d[0];i>=1;i--) { ns=ns*base+a.d[i]; c.d[i]=ns/b; ns%=b; if(!c.d[0] && c.d[i]) c.d[0]=i; } return c; }
原文:https://www.cnblogs.com/hsez-cyx/p/12309519.html