大数模板
来源:互联网 发布:青海网络广播电视台 编辑:程序博客网 时间:2024/06/05 21:52
class bigInt{public: int num[302],len; bigInt() {num[0]=0,len=0;} bigInt operator=(const int &a) { int tmp=a; len=0; while(tmp) num[len++]=tmp%10,tmp/=10; if (!len)num[0]=0,len=1; } bigInt(const int &a) { int tmp=a; len=0; while(tmp) num[len++]=tmp%10,tmp/=10; if (!len)num[0]=0,len= 1; } friend bool operator<(const bigInt &b,const bigInt &a) { if (a.len!=b.len) return b.len<a.len; for (int i=b.len-1;i>=0;i--) if (b.num[i]!=a.num[i]) return b.num[i]<a.num[i]; return false; } friend bool operator>(const bigInt & b,const bigInt &a) { if (a.len!=b.len) return b.len>a.len; for (int i=b.len-1;i>=0;i--) if (b.num[i]!=a.num[i]) return b.num[i]>a.num[i]; return false; } bigInt operator+(const bigInt &a) { bigInt res; int i,j,c =0,adda,addb; for (i=0,j=0;i<len||j<a.len||c;) { adda=0,addb=0; if(i <len) adda= num[i++]; if(j< a.len) addb=a.num[j++]; res.num[res.len++]=(adda+addb+c)%10; c=(adda+addb+c)/10; } return res; } bigInt operator-(const bigInt &b) { bigInt res; int i,j,c=0,suba,subb; for(i=0,j=0;i<len||j<b.len||c;) { suba=0,subb=0; if(i<len) suba=num[i++]; if(j<b.len) subb=b.num[j++]; res.num[res.len++] =(suba-subb+c+10)%10; c=(suba-subb+c+10)/10-1; } for(i=res.len-1;i>0;i--) if (res.num[i])break; res.len=i+1; return res; } bigInt operator*(const bigInt &b) { bigInt res; int i,j,c,now,mulb,tmp; memset(res.num,0,sizeof(int)*(len+b.len)); for(i=0;i<len;i++) { now=i,c=0; for(j=0;j<b.len||c;) { mulb=0; if (j<b.len) mulb=b.num[j++]; tmp=res.num[now]+num[i]*mulb+c; res.num[now++]=tmp % 10; c=tmp/10; } } for(i=len+b.len-1;i>0;i--) if (res.num[i]) break; res.len = i + 1; return res; } void display() { int i; for (i=len-1;i>1;i--) if (num[i])break; for (;i>=0;i--) printf("%d",num[i]); printf("\n"); }};
阅读全文
0 0
- 大数模板
- 大数模板
- 大数模板
- 大数模板
- 大数模板
- 大数 模板
- 大数模板
- 大数模板
- 大数模板
- 大数模板
- 大数模板
- 大数模板
- 大数模板
- 大数模板
- 大数模板
- 大数模板
- 大数模板
- 大数模板
- java---构造器
- bzoj 4082: [Wf2014]Surveillance 倍增
- final&static在java中的具体表现
- 首次在web项目中使用Json报错的问题
- LCA 最近公共祖先问题
- 大数模板
- 【集训】jzoj 2017.8.22 noip模拟赛A 总结
- leetcode 540. Single Element in a Sorted Array 题解
- linux死机处理(我仅仅会使用一种方法)
- float与double的范围和精度
- 数组元素排序
- Find Duplicate File in System问题及解法
- Ruby File
- Scala面向对象编程之对象