HDU2188 選拔志願者【巴什博弈】

選拔志願者

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 14771 Accepted Submission(s): 9645

Problem Description
你的博文HDU2188 選拔志願者【巴什博弈】因涉及“內容違反國家相關法律法規”, 審覈未通過,您可以修改相關內容後再次發佈。健康和諧的網絡環境,需要我們共同維護,如有問題請聯繫客服。
以下刪除若干字,…

選拔規則如下:
1、最初的捐款箱是空的;
2、兩人輪流捐款,每次捐款額必須爲正整數,並且每人每次捐款最多不超過m元(1<=m<=10)。
3、最先使得總捐款額達到或者超過n元(0<n<10000)的一方爲勝者,則其可以親赴災區服務。
我們知道,兩人都很想入選志願者名單,並且都是非常聰明的人,假設林隊先捐,請你判斷誰能入選最後的名單?

Input
輸入數據首先包含一個正整數C,表示包含C組測試用例,然後是C行數據,每行包含兩個正整數n,m,n和m的含義參見上面提到的規則。

Output
對於每組測試數據,如果林隊能入選,請輸出字符串"Grass", 如果徐隊能入選,請輸出字符串"Rabbit",每個實例的輸出佔一行。

Sample Input
2
8 10
11 10

Sample Output
Grass
Rabbit

Author
lcy

Source
2008-06-18《 ACM程序設計》期末考試——四川加油!中國加油!

問題鏈接HDU2188 選拔志願者
問題簡述:(略)
問題分析
    巴什博奕(Bash Game):一堆n個物品,兩個人輪流從中取物,規定每次至少取一個最多取m個,最後取光者勝。
    若n=m+1,由於一次最多隻能取m個,先取者無論拿走多少,後取者都能夠一次拿走剩餘的物品,後取者取勝;同理可以發現取勝法則,若n=(m+1)k+s,其中k爲任意自然數,s≤m,先取者拿走s個物品後,後取者拿走x(≤m)個,先取者再拿走m+1-x個,剩下(m+1)(k-1)個,之後保持這樣的取法,先取者肯定獲勝。總之,給對手留下(m+1)的倍數個,可以保證最後獲勝。
程序說明:(略)
參考鏈接:(略)
題記:(略)

AC的C++語言程序如下:

/* HDU2188 選拔志願者 */

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int c, n, m;
    scanf("%d", &c);
    while(c--) {
        scanf("%d%d", &n, &m);
        n % (m + 1) == 0 ? puts("Rabbit") : puts("Grass");
    }

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