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<stdio.h>
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;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章