洛谷P4018 RoyOctober之取石子

题目背景

\(Roy\)\(October\)两人在玩一个取石子的游戏。

题目描述

游戏规则是这样的:共有\(n\)个石子,两人每次都只能取\(p^k\)个(\(p\)为质数,\(k\)为自然数,且\(p^k\)小于等于当前剩余石子数),谁取走最后一个石子,谁就赢了。

现在\(October\)先取,问她有没有必胜策略。

若她有必胜策略,输出一行"\(October wins!\)";否则输出一行"\(Roy wins!\)"。

输入输出格式

输入格式:

第一行一个正整数T,表示测试点组数。

\(2\)行~第\((T+1)\)行,一行一个正整数\(n\),表示石子个数。

输出格式:

\(T\)行,每行分别为"\(October wins!\)"或"\(Roy wins!\)"。

输入输出样例

输入样例#1:

3
4
9
14

输出样例#1:

October wins!
October wins!
October wins!

说明

对于\(30\%\)的数据,\(1<=n<=30\)

对于\(60\%\)的数据,\(1<=n<=1,000,000\)

对于\(100\%\)的数据,\(1<=n<=50,000,000,1<=T<=100,000\)

(改编题)

思路:被洛谷标签给骗了,不知道为什么这道题的标签是\(prim\),本来是想练最小生成树,看数据范围,根本不可做,而且……也没法建边啊,洛谷标签真的是……不过点进来了,就做做吧,发现这其实就是个打表题,如果输入的\(n\)\(6\)值为\(0\),就是先手必败态,否则为先手必胜态。

代码:

#include
using namespace std;
int t,n;
int main() {scanf("%d",&t);while(t--) {scanf("%d",&n);if(n%6) printf("October wins!\n");else printf("Roy wins!\n");}return 0;
}

转载于:https://www.cnblogs.com/grcyh/p/10134364.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部