取石子游戏II
描述
一堆石子有n个,两人轮流取.每次取最少取1个,最多取m个。取完者胜.先取者负输出"Second win".先取者胜输出"First win"
输入
多组测试数据。
每组测试数据包含2个正整数n,m。(n,m<=10000000)
输出
对于每组测试数据,输出谁获胜.
输入样例:
2 1
3 2
3 1
输出样例:
Second win
Second win
First win
巴什博弈:有一个含有n个物品的堆,两个人轮流从这堆物品中取物品, 规定每次至少取一个,最多取m个。最后取光者获胜。问你最后谁能获得胜利?
结论:如果n = m + 1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够保证一次拿走剩余的物品,所有后者取胜。
所以如果 n%(m+1) !=0 ,这种情况下 按照上述所说的方法则先手获胜。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
if(n%(m+1)==0)
printf("Second win\n");
else
printf("First win\n");
}
return 0;
}