博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1005 矩阵取数游戏 DP+高精类
阅读量:4353 次
发布时间:2019-06-07

本文共 1891 字,大约阅读时间需要 6 分钟。

1 #include
2 #include
3 4 using namespace std; 5 6 inline int max(int x,int y){ 7 if(x>y)return x;else return y; 8 } 9 10 struct bignum{ 11 int c[10],l; 12 13 void clear(){ 14 memset(c,0,sizeof(c)); 15 l=1; 16 } 17 18 bignum(){ 19 clear(); 20 } 21 22 bignum operator =(int x){ 23 memset(c,0,sizeof(c)); 24 l=0; 25 while(x){ 26 l++; 27 c[l]=x%10000; 28 x/=10000; 29 } 30 return *this; 31 } 32 33 bignum(int x){ 34 *this=x; 35 } 36 37 void print(){ 38 printf("%d",c[l]); 39 for(int i=l-1;i>=1;i--){ 40 if(c[i]<10)printf("000"); 41 else if(c[i]<100)printf("00"); 42 else if(c[i]<1000)printf("0"); 43 printf("%d",c[i]); 44 } 45 } 46 }; 47 48 bignum operator +(bignum a,bignum b){ 49 bignum ans; 50 ans.l=max(a.l,b.l); 51 for(int i=1;i<=ans.l;i++)ans.c[i]=a.c[i]+b.c[i]; 52 for(int i=1;i<=ans.l;i++) 53 if(ans.c[i]>=10000){ 54 ans.c[i]-=10000; 55 ans.c[i+1]++; 56 } 57 if(ans.c[ans.l+1])ans.l++; 58 return ans; 59 } 60 61 bignum operator *(bignum a,bignum b){ 62 bignum ans; 63 for(int i=1;i<=a.l;i++) 64 for(int j=1;j<=b.l;j++){ 65 ans.c[i+j-1]+=a.c[i]*b.c[j]; 66 ans.c[i+j]+=ans.c[i+j-1]/10000; 67 ans.c[i+j-1]%=10000; 68 } 69 if(ans.c[a.l+b.l])ans.l=a.l+b.l;else ans.l=a.l+b.l-1; 70 return ans; 71 } 72 73 bool operator <(bignum a,bignum b){ 74 if(a.l!=b.l)return a.l
=1;i--)if(a.c[i]!=b.c[i])return a.c[i]
(bignum a,bignum b){ 80 return b

 

转载于:https://www.cnblogs.com/running-coder-wfh/p/11336713.html

你可能感兴趣的文章
[简单到爆]eclipse-jee-neon的下载和安装
查看>>
vector
查看>>
Redis学习之set类型总结
查看>>
栈和队列
查看>>
CSS2-3常见的demo列子总结一
查看>>
第522篇--DataTable to Excel C#
查看>>
C++\virtual 虚函数、纯虚函数
查看>>
asp.net mvc 4多级area实现技巧
查看>>
Solr
查看>>
MySQL binlog数据库同步技术总结
查看>>
静态方法
查看>>
保护HTTP的安全
查看>>
python类的特殊成员变量
查看>>
sublime text3最新版本注册码(build 3143)
查看>>
linux使用技巧
查看>>
必背公式及常数
查看>>
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
查看>>
js时间戳转时间格式
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Linux的用户态和内核态
查看>>