Euclidean Nim(bzoj 4147)
Description
Input
Output
Sample Input
3 2 1
2 3 1
3 4 5
2 4 3
Sample Output
P
E
R
HINT
在第一组数据中,Euclid必须新放入3颗石子,然后Pythagoras拿走4颗石子并获胜。
/*
第一次写博弈论,这道题貌似很经典
首先令d=gcd(p,q),如果d不整除n,那么显然无解。
下面讨论有解的情况:
① p=q :显然先手必胜。
② p>q&&n<p :先手第一次数量加p,后手可以把数量变成n%q,这样先手永远无法取石子,后手必胜。
③ p>q&&n>=p :如果先手第一次取完石子,石子数量大于p,后手还是可以把数量变成n%q,后手必胜;
否则,先手取成n mod p -> 后手+q -> 先手?p -> 后手+q -> ……,如果n%(p-q)=0,则先手必胜。
④ p<q&&n<p :先手第一次把数量变成n+p,如果n+p<q,就变成了第二种情况,否则是第三种情况。
⑤ p<q&&n>=p :那么先手可以把石子变成n%p,就变成了第二种情况。
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
bool ok(int n,int p,int q){
return n%p<q&&n%p%(p-q)==;
}
int main(){
int T;scanf("%d",&T);
while(T--){
int p,q,n;
scanf("%d%d%d",&p,&q,&n);
int gcd=__gcd(p,q);
if(n%gcd){
printf("R\n");
continue;
}
p/=gcd;q/=gcd;n/=gcd;
if(p==q) printf("E\n");
else if(p>q){
if(n<p) printf("P\n");
else {
if(ok(n,p,q)) printf("E\n");
else printf("P\n");
}
}
else {
if(n<p){
if(n+p<q) printf("E\n");
else {
if(ok(n+p,q,p)) printf("P\n");
else printf("E\n");
}
}
else printf("E\n");
}
}
return ;
}
Euclidean Nim(bzoj 4147)的更多相关文章
- 【BZOJ】4147: [AMPPZ2014]Euclidean Nim
[算法]博弈论+数论 [题意]给定n个石子,两人轮流操作,规则如下: 轮到先手操作时:若石子数<p添加p个石子,否则拿走p的倍数个石子.记为属性p. 轮到后手操作时:若石子数<q添加q个石 ...
- Bzoj 4147: [AMPPZ2014]Euclidean Nim(博弈)
4147: [AMPPZ2014]Euclidean Nim Time Limit: 1 Sec Memory Limit: 256 MB Description Euclid和Pythagoras在 ...
- BZOJ 4147: [AMPPZ2014]Euclidean Nim (分类讨论博弈神题)
orz PoPoQQQ神犇,每一篇题解都写得很清楚 (看了PoPoQQQ的哲♂学三部曲,瑟瑟发抖) CODE #include <cstdio> #include <algorith ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- AMPPZ2014
[AMPPZ2014]The Lawyer 记录每天结束的最早的会议以及开始的最晚的会议即可. #include<cstdio> #define N 500010 int n,m,i,d, ...
- 【BZOJ】【2819】NIM
这题……咋说捏,其实是一道披着博弈论外衣的树上操作问题…… 随便用dfs序或者树链剖分转成序列,然后查询路径上的所有点的NIM和(异或和)就行了,毕竟除了是在树上以外,就是裸的NIM问题. 树链剖分: ...
- [BZOJ - 2819] Nim 【树链剖分 / DFS序】
题目链接: BZOJ - 2819 题目分析 我们知道,单纯的 Nim 的必胜状态是,各堆石子的数量异或和不为 0 .那么这道题其实就是要求求出树上的两点之间的路径的异或和.要求支持单点修改. 方法一 ...
- BZOJ 3105 [CQOI2013]新Nim游戏 ——线性基
[题目分析] 神奇的题目,两人都可以第一次取走足够多堆的石子. nim游戏的规则是,如果异或和为0,那么就先手必输,否则先手有必胜策略. 所以只需要剩下一群异或和为0就可以了. 先排序,线性基扫一遍即 ...
- [BZOJ 2819]NIM(dfs序维护树上xor值)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2819 分析: 树上的nim游戏,关键就是要判断树上的一条链的异或值是否为0 这个题目有 ...
随机推荐
- 用NPOI从Excel到DataTable
NPOI功能强大,不用装Excel,就可以操作表格中数据----Excel.Sheet------>DataTable private IWorkbook workbook = null; pr ...
- mvc报( 检测到有潜在危险的 request.form 值 )错的解决方案
今天在做项目中遇到了报( 检测到有潜在危险的 request.form 值 )错,百度过后解决了该问题,出此问题主要还是因为提交的Form中有HTML字符串,例如你在TextBox中输入了html标签 ...
- html5 input 标签
<!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content ...
- AJPFX关于多线程概述及应用
一.认识多任务.多进程.单线程.多线程要认识多线程就要从操作系统的原理说起. 以前古老的DOS操作系统(V 6.22)是单任务的,还没有线程的概念,系统在每次只能做一件事情.比如你在copy东西的时候 ...
- 【程小白】Java基本特性
一.StringBuffer.StringBuilder的区别 StringBuffer是线程安全的,StringBuilder是线程不安全的.所以以后在单线程中,如果涉及大量字符串操作,还是用Str ...
- AI学习一:环境安装
对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成 ...
- H5拖拽事件的完整过程和语法
<!DOCTYPE HTML> <html> <head> <style type="text/css"> #div1 { widt ...
- codevs 5438 zbd之难题(水题日常)
时间限制: 1 s 空间限制: 1000 KB 题目等级 : 白银 Silver 题目描述 Description zbd想要一个计算器,请你编一个计算器. 输入描述 Input Descrip ...
- ecpg - 嵌入的 SQL C 预处理器
SYNOPSIS ecpg [ option...] file... DESCRIPTION 描述 ecpg 是一个嵌入的用于C 语言的 SQL 预编译器. 它把嵌有 SQL 语句的 C 程序通过将 ...
- javaweb系列-关于HttpSessionListener的sessionDestroyed什么时候触发
根据书本写了下面这个监听器,然后开始调试,打开一个浏览器来访问该网页,可以正常触发sessionCreated,然后关闭浏览器,发现没有触发sessionDestroyed,然后我怀疑是不是这个监听器 ...