模板高精度。。。。。
Posted luv-letters
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板高精度。。。。。相关的知识,希望对你有一定的参考价值。
真是越学越回去了,颓颓颓~
看到了zky大佬的高精模板 简直tql
兴冲冲打抄了一发
如下:
1 struct bignum{ 2 int num[100]; 3 bignum(){num[0]=1;} 4 void set(long long x){ 5 memset(num,0,sizeof(num)); 6 while (x) num[++num[0]] =x%10,x/=10; 7 if(!num[0]) num[0]=1; 8 } 9 void show(){ 10 for(int i=num[0];i>=1;--i) 11 putchar(num[i]+‘0‘); 12 } 13 bignum operator + (bignum b) const { 14 bignum c; 15 c.set(0); 16 c.num[0]=max(num[0]+b.num[0])+1; 17 for(int i=1;i<=num[i];i++){ 18 c.num[i]+=num[i]+b.num[i]; 19 c.num[i+1]+=c.num[i]/10; 20 c.num[i]%=10; 21 } 22 while (c.num[0]>1 && !c.num[c.num[0]]) 23 c.num[0]--; 24 return c; 25 } 26 bignum operator * (bignum b) const { 27 bignum c; 28 c.set(0); 29 c.num[0]=num[0]+b.num[0]+1; 30 for(int i=1;i<=num[i];i++) 31 for(int j=1;j<=b.num[0];j++){ 32 c.num[i-j+1]+=num[i]*b.num[j]; 33 c.num[i-j]+=c.num[i-j+1]/10; 34 c.num[i-j+1]%=10; 35 } 36 while (c.num[0]>1 && !c.num[c.num[0]]) 37 c.num[0]--; 38 return c; 39 } 40 bool operator < (bignum b) const { 41 if(num[0]<b.num[0]) return true; 42 if(num[0]>b.num[0]) return false; 43 for(int i=num[0];i>=1;i++){ 44 if(num[i]<b.num[i]) return true; 45 if(num[i]>b.num[i]) return false; 46 } 47 return false; 48 } 49 };
以上是关于模板高精度。。。。。的主要内容,如果未能解决你的问题,请参考以下文章