BZOJ 4147 AMPPZ2014 Euclidean Nim 博弈论+数论
来源:互联网 发布:三国杀微端网络错误 编辑:程序博客网 时间:2024/06/10 06:28
题目大意:给定
轮到先手操作时:若石子数
轮到后手操作时:若石子数
拿走所有石子的人胜利,问先手是否必胜,或输出游戏会永远进行下去
令
否则将
然后我们讨论:
状态1.若
不用解释吧= =
状态2.若
证明:
显然先手的操作只能是添加
故先手永远不能取石子,而由于
状态3.若
证明:
显然如果先手操作后石子数
因此先手必胜只有可能如此操作:
先手取成
那么一轮下来,石子数
故当
状态4:若
那么如果
否则转化为状态3
状态5:若
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int n,p,q;bool Calculate(int n,int p,int q){ return n%p<q && n%p%(p-q)==0;}int main(){ int T; for(cin>>T;T;T--) { scanf("%d%d%d",&p,&q,&n); int gcd=__gcd(p,q); if(n%gcd) { puts("R"); continue; } p/=gcd;q/=gcd;n/=gcd; if(p==q) puts("E"); else if(p>q) { if(n<p) puts("P"); else puts(Calculate(n,p,q)?"E":"P"); } else { if(n<p) { if(n+p<q) puts("E"); else puts(Calculate(n+p,q,p)?"P":"E"); } else puts("E"); } } return 0;}
1 0
- BZOJ 4147 AMPPZ2014 Euclidean Nim 博弈论+数论
- [数论 博弈论] BZOJ 4147 [AMPPZ2014]Euclidean Nim
- Bzoj 4147: [AMPPZ2014]Euclidean Nim(博弈)
- 【AMPPZ2014】【BZOJ4147】Euclidean Nim
- 【bzoj4147】 [AMPPZ2014]Euclidean Nim
- [BZOJ4147][AMPPZ2014]Euclidean Nim(博弈+数学相关)
- [bzoj4147]Euclidean Nim
- HDU_3875 Euclidean Algorithm 数论
- 数论-Euclidean algorithm
- 【bzoj 4347】 [POI2016]Nim z utrudnieniem - 博弈论 DP
- bzoj 4347: [POI2016]Nim z utrudnieniem 博弈论+动态规划
- BZOJ 3105 新Nim游戏(博弈论+线性基)
- BZOJ 4589 Hard Nim(博弈论+FWT+快速幂)
- 【博弈论】NIM定理
- 博弈论—Nim游戏
- Nim Game (博弈论)
- nim博弈论 SG
- 【BZOJ2819】Nim 博弈论+树链剖分
- RDLC报表固定标题行每页显示终级答案
- Traceroute与Tracert
- Python下载百度贴吧帖子里面的图片
- iOS 中划线
- String源码分析之Java中的String为什么是不可变的以及replace方法源码分析
- BZOJ 4147 AMPPZ2014 Euclidean Nim 博弈论+数论
- ffmpeg 源码分析之媒体打开过程
- android 数据存储的几种方式
- 飞花的传送门
- Android 查看内存使用情况
- JS高级编程5-作用域安全的构造函数
- Core Animation研究系列 : CATransform3D 矩阵变换之立方体旋转实现细节
- mysql join操作
- [Android Lint] xxx is not translated in xxx 的解决方法