洛谷——P4018 Roy&October之取石子
P4018 Roy&October之取石子
题目背景
Roy和October两人在玩一个取石子的游戏。
题目描述
游戏规则是这样的:共有n个石子,两人每次都只能取p^kpk个(p为质数,k为自然数,且p^kpk小于等于当前剩余石子数),谁取走最后一个石子,谁就赢了。
现在October先取,问她有没有必胜策略。
若她有必胜策略,输出一行"October wins!";否则输出一行"Roy wins!"。
输入输出格式
输入格式:
第一行一个正整数T,表示测试点组数。
第2行~第(T+1)行,一行一个正整数n,表示石子个数。
输出格式:
T行,每行分别为"October wins!"或"Roy wins!"。
输入输出样例
说明
对于30%的数据,1<=n<=30;
对于60%的数据,1<=n<=1,000,000;
对于100%的数据,1<=n<=50,000,000,1<=T<=100,000。
(改编题)
乍一看像是博弈
其实数学归纳法也可以完成这个题目
我们来看下面的表格
| 棋子的个数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 第一个人取得个数 | 1^1 | 2^1 | 3^1 | 2^2 | 5^1 | 2^2 | 1^1+2^1 | 2^1+2^1 | 3^1+2^1 |
| 第二个人取得个数 | 0 | 0 | 0 | 0 | 0 | 2^1 | 2^2 | 2^2 | 2^2 |
当棋子的个数小于等于6的时候,我们可以看到在1~5的时候全是第一个人赢,当n=6是第二个人赢,当7~11内我们可以将数拆成1~5内的一个数想让第一个人拿,然后余出个6,这样第二个人就不可能一次拿完,只能再让第一个人拿一次,这样第一个人必胜,当12时,第二个人赢、、、以此类推,我们可以发现,当n为6的倍数的时候,第二个人赢,其余情况均为第一个人赢
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int T,n;
int read()
{
,f=; char ch=getchar();
;ch=getchar();}
+ch-',ch=getchar();
return x*f;
}
int main()
{
T=read();
while(T--)
{
n=read();
==) printf("Roy wins!\n");
else printf("October wins!\n");
}
;
}
洛谷——P4018 Roy&October之取石子的更多相关文章
- 洛谷 P4018 Roy&October之取石子
洛谷 P4018 Roy&October之取石子 题目背景 Roy和October两人在玩一个取石子的游戏. 题目描述 游戏规则是这样的:共有n个石子,两人每次都只能取 p^kpk 个(p为质 ...
- 洛谷P4018 Roy&October之取石子
题目背景 \(Roy\)和\(October\)两人在玩一个取石子的游戏. 题目描述 游戏规则是这样的:共有\(n\)个石子,两人每次都只能取\(p^k\)个(\(p\)为质数,\(k\)为自然数,且 ...
- 洛谷P4018 Roy&October之取石子 题解 博弈论
题目链接:https://www.luogu.org/problem/P4018 首先碰到这道题目还是没有思路,于是寻思还是枚举找一找规律. 然后写了一下代码: #include <bits/s ...
- 洛谷P4860 Roy&October之取石子II 题解 博弈论
题目链接:https://www.luogu.org/problem/P4860 和<P4018 Roy&October之取石子>一样的推导思路,去找循环节. 可以发现:只要不能被 ...
- P4018 Roy&October之取石子
题目背景 Roy和October两人在玩一个取石子的游戏. 题目描述 游戏规则是这样的:共有n个石子,两人每次都只能取 p^kpk 个(p为质数,k为自然数,且 p^kpk 小于等于当前剩余石子数), ...
- luogu P4018 Roy&October之取石子(博弈论)
题意 题解 如果n是6的倍数,先手必败,否则先手必胜. 因为6*x一定不是pk 所以取得话会变成6*y+a的形式a=1,2,3,4,5: 然后a一定为质数.我们把a取完就又成为了6*x的形式. 又因为 ...
- 洛谷 Roy&October之取石子
题目背景 Roy和October两人在玩一个取石子的游戏. 题目描述 游戏规则是这样的:共有n个石子,两人每次都只能取pk 个(p为质数,k为自然数,且pk小于等于当前剩余石子数),谁取走最后一个石子 ...
- [luogu4018][Roy&October之取石子]
题目链接 思路 这个题思路挺巧妙的. 情况一: 首先如果这堆石子的数量是1~5,那么肯定是先手赢.因为先手可以直接拿走这些石子.如果石子数量恰好是6,那么肯定是后手赢.因为先手无论怎样拿也无法直接拿走 ...
- [luogu4860][Roy&October之取石子II]
题目链接 思路 这个题和上个题类似,仔细推一下就知道这个题是判断是否是4的倍数 代码 #include<cstdio> #include<iostream> #define f ...
随机推荐
- NOIP2006 数列
codevs 1141 数列 http://codevs.cn/problem/1141/ 2006年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目描述 ...
- 【NOIP】提高组2013 积木大赛
[算法]找规律(听说还有写RMQ的www) [题解]ans+=(a[i]-a[i-1]) (i=1...n)(a[i]>a[i-1]) 后面比前面大k,说明要新叠加k个区间来达到所需高度.(看 ...
- jquery的基础语法、选取元素、操作元素、加事件、挂事件及移除事件
jquery基础知识 1.jquery文件的引入,所有的js代码要写在下面那段代码下面. <script src="../jquery-1.11.2.min.js">& ...
- Spring boot 集成Dubbox(山东数漫江湖)
前言 因为工作原因,需要在项目中集成dubbo,所以去查询dubbo相关文档,发现dubbo目前已经不更新了,所以把目光投向了dubbox,dubbox是当当网基于dubbo二次开发的一个项目,dub ...
- POJ 2431 Expedition (优先队列+贪心)
题目链接 Description A group of cows grabbed a truck and ventured on an expedition deep into the jungle. ...
- 移动端页面使用rem布局
阿里团队的高清布局方案代码 所谓高清方案就是根据设备屏幕的DPR(设备像素比,又称DPPX,比如dpr=2时,表示1个CSS像素由4个物理像素点组成) 动态设置 html 的font-size, 同时 ...
- 转载 JAVA SE 连接ACCESS
本代码实现连接 本机数据库的方法. 操作步骤: 1.进入控制面板,打开“管理工具→数据源(ODBC)”,弹出“ODBC数据源管理器”,在“用户DSN”选项卡中,单击选中名称为“Visio Databa ...
- netlink socket编程
转载 原文地址:netlink socket编程之why & how (转) 作者:renyuan000 作者: Kevin Kaichuan He@2005-1-5 翻译整理:duanjig ...
- Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)【转】
转自:http://www.linuxidc.com/Linux/2013-06/85221p3.htm 阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入 ...
- python基础===函数的几个要点
函数 可接受任意数量参数的函数 位置参数 和 关键字参数 为了能让一个函数接受任意数量的位置参数,可以使用一个*参数. def avg(first, *r): return (first + s ...