洛谷P4018 Roy&October之取石子

题目背景

(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<cstdio>
using namespace std;
int t,n;
int main() {
  scanf("%d",&t);
  while(t--) {
  	scanf("%d",&n);
  	if(n%6) printf("October wins!
");
  	else printf("Roy wins!
");
  }
  return 0;
}
原文地址:https://www.cnblogs.com/grcyh/p/10134364.html