题目:
各位勇敢者要玩的第一个游戏是什么呢?很简单,它是这样定义的:
1、 本游戏是一个二人游戏;
2、 有一堆石子一共有n个;
3、 两人轮流进行;
4、 每走一步可以取走1…m个石子;
5、 最先取光石子的一方为胜;
如果游戏的双方使用的都是最优策略,请输出哪个人能赢。
分析:
巴什博奕很容易理解,将n个石子按每(m+1)个一堆分成若干堆,不足m+1的放最后一堆,先手可以先取最后一堆,接下来不管对手取走某堆的任意个石子,先手都可以将该堆剩下的石子取光。在这种策略下,只要n不是m+1的整数倍,先手必胜,否则必败(处于前面那种情况后手的局面)。
代码:
#include<stdio.h>
int main()
{
int T,n,m;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
if(n%(m+1)==0) puts("second");
else puts("first");
}
return 0;
}