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;
}