石子合并
Posted SuperChan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了石子合并相关的知识,希望对你有一定的参考价值。
- 一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子。游戏的规则是这样的。设有一堆石子,数量为N(1<=N<=1000000),两个人轮番取出其中的若干个,每次最多取M个(1<=M<=1000000),最先把石子取完者胜利。我们知道,TT和他/她的室友都十分的聪明,那么如果是TT先取,他/她会取得游戏的胜利么?
- 输入
- 第一行是一个正整数n表示有n组测试数据
输入有不到1000组数据,每组数据一行,有两个数N和M,之间用空格分隔。 - 输出
- 对于每组数据,输出一行。如果先取的TT可以赢得游戏,则输出“Win”,否则输出“Lose”(引号不用输出)
- 样例输入
-
2 1000 1 1 100
- 样例输出
-
Lose Win
分析:
定义:f(n):= 当某个玩家面对n个石子时的最终的胜败情况(胜利:1, 失败:0)。如果f(x)=1,我们称x为必胜态,否则为必败态。
1. 显然面对石子个数为0时的那个人输掉了,所以:f(0) = 0
2. 由此,推算出上一步的话,f(1)=f(2)=...=f(m)=1
3. 然后,我们会发现,f(m+1)=0,即:当面对m+1个石子时,因为必须要拿1~m个石子,所以一定会给对手m~1个石子,使对手进入必胜态,于是自己必败
4. 接着,按照这个规律一直递推下去,会发现f(k(m+1)) = 0,其余均为必胜态。故,只需要判断n是否能整除m+1就能够判断面对n个石子的胜败情况了!
以上是关于石子合并的主要内容,如果未能解决你的问题,请参考以下文章