博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[NOIp2012提高组]国王游戏
阅读量:4618 次
发布时间:2019-06-09

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

1 #include
2 #include
3 #include
4 #include
5 #define N 10000 6 using namespace std; 7 struct Big_Number 8 { 9 int a[N+10]; 10 Big_Number() 11 { 12 memset(a,0,sizeof(a)); 13 a[0]=1; 14 } 15 Big_Number(int n) 16 { 17 memset(a,0,sizeof(a)); 18 a[0]=0; 19 while(n) 20 { 21 a[++a[0]]=n%10; 22 n/=10; 23 } 24 if(!a[0]) 25 a[0]=1; 26 } 27 Big_Number(char *s) 28 { 29 memset(a,0,sizeof(a)); 30 int len=strlen(s); 31 for(int i=1;i<=len;i++) 32 a[i]=s[len-i]-'0'; 33 a[0]=len; 34 } 35 Big_Number operator*(const Big_Number &b)const 36 { 37 Big_Number c; 38 int i,j,len=a[0]+b.a[0]; 39 for(i=1;i<=a[0];i++) 40 for(j=1;j<=b.a[0];j++) 41 c.a[i+j-1]+=a[i]*b.a[j]; 42 for(i=1;i
1&&!c.a[len]) 47 len--; 48 c.a[0]=len; 49 return c; 50 } 51 Big_Number operator/(int b)const 52 { 53 Big_Number c; 54 int d=0,i,len=a[0]; 55 for(i=a[0];i;i--){ 56 d=d*10+a[i]; 57 c.a[i]=d/b; 58 d%=b; 59 } 60 while(len>1&&!c.a[len]) 61 len--; 62 c.a[0]=len; 63 return c; 64 } 65 Big_Number operator+(const Big_Number &b)const 66 { 67 Big_Number c; 68 int len=max(a[0],b.a[0]),i; 69 for(i=1;i<=len;i++){ 70 c.a[i]+=a[i]+b.a[i]; 71 c.a[i+1]=c.a[i]/10; 72 c.a[i]%=10; 73 } 74 len++; 75 while(len>1&&!c.a[len]) 76 len--; 77 c.a[0]=len; 78 return c; 79 } 80 Big_Number operator-(const Big_Number &b)const 81 { 82 Big_Number c; 83 int i,len=a[0]; 84 for(i=1;i<=len;i++) 85 { 86 c.a[i]+=a[i]-b.a[i]; 87 if(c.a[i]<0)c.a[i]+=10,c.a[i+1]--; 88 } 89 while(len>1&&!c.a[len])len--; 90 c.a[0]=len; 91 return c; 92 } 93 void operator*=(const Big_Number &x){*this=*this*x;} 94 void operator/=(const int &x){*this=*this/x;} 95 void operator+=(const Big_Number &x){*this=*this+x;} 96 void operator-=(const Big_Number &x){*this=*this-x;} 97 void print(){ 98 for(int i=a[0];i;i--) 99 printf("%d",a[i]);100 }101 bool operator>(const Big_Number&b)const102 {103 if(a[0]>b.a[0])104 return 1;105 if(a[0]
b.a[i])109 return 1;110 else if(a[i]
b.a[0])119 return 0;120 for(int i=a[0];i;i--)121 if(a[i]
b.a[i])124 return 0;125 return 0;126 }127 bool operator<=(const Big_Number&b)const{ return !(*this>b);}128 Big_Number operator/(const Big_Number&b)const129 {130 Big_Number l(0),r(*this),mid;131 while(l

 

转载于:https://www.cnblogs.com/__Kgds/p/9466924.html

你可能感兴趣的文章
常見算法的穩定性
查看>>
js不间断滚动的简单教程
查看>>
牛客小白月赛16
查看>>
计算机基础作业2
查看>>
xtu数据结构 C. Ultra-QuickSort
查看>>
HDU 1180 诡异的楼梯
查看>>
vue2实现自定义样式radio单选框
查看>>
php面试专题---12、JavaScript和jQuery基础考点
查看>>
js进阶 14-4 $.get()方法和$.post()方法如何使用
查看>>
js进阶正则表达式11RegExp的属性和方法(RegExp的属性和方法,就是RegExp对象.(点)什么的形式)(正则表达式执行之前会被编译)...
查看>>
VMware安装Ubuntu过程中无法全屏的简单解决办法
查看>>
Ubuntu下gcc及g++环境配置
查看>>
linux_命令格式和命令提示符
查看>>
数据在我们生活中的应用,万物互联
查看>>
ClickOnce部署Winform程序的方方面面
查看>>
Gradle 修改 Maven 仓库地址
查看>>
orm收藏
查看>>
Write Solid Code --- 笔记一
查看>>
前端学习02-01表格标签
查看>>
ES6工作中常用知识点
查看>>