zcmu-1122: 取石子游戏(巴什博奕)

1122: 取石子游戏II
Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 211  Solved: 108
[Submit][Status][Web Board]
Description
一堆石子有n个,两人轮流取.每次取最少取1个,最多取m个。取完者胜.先取者负输出"Second win".先取者胜输出"First win"
Input
多组测试数据。
每组测试数据包含2个正整数n,m。(n,m<=10000000)
Output
对于每组测试数据,输出谁获胜.
Sample Input
2 1
3 2
3 1


Sample Output
Second win
Second win
First win


HINT

Source

经典的巴什博奕题目

巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
小学的时候就应该遇到过了。。。
一次只能拿1---m个我们发现只要n为m+1的 时候一定后取的赢, 如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。
#include
int main()
{
    int n,m;
    while(~scanf("%d %d",&n,&m))
    {
        if(n%(1+m)==0)
        {
            printf("Second win\n");
        }
        else{printf("First win\n");}
    }
    return 0;
}




你可能感兴趣的:(zcmu)