取石子(一)
時間限制:
3000 ms | 內存限制:
65535 KB
難度:
2
- 描述
- 一天,TT在寢室閑着無聊,和同寢的人玩起了取石子游戲,而由於條件有限,他/她們是用旺仔小饅頭當作石子。游戲的規則是這樣的。設有一堆石子,數量為N(1<=N<=1000000),兩個人輪番取出其中的若干個,每次最多取M個(1<=M<=1000000),最先把石子取完者勝利。我們知道,TT和他/她的室友都十分的聰明,那么如果是TT先取,他/她會取得游戲的勝利么?
- 輸入
-
第一行是一個正整數n表示有n組測試數據
輸入有不到1000組數據,每組數據一行,有兩個數N和M,之間用空格分隔。 - 輸出
- 對於每組數據,輸出一行。如果先取的TT可以贏得游戲,則輸出“Win”,否則輸出“Lose”(引號不用輸出)
- 樣例輸入
-
2 1000 1 1 100
- 樣例輸出
-
Lose Win
1 /* 2 巴什博奕(Bash Game): 3 只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取一個,最多取m個。 4 最后取光者得勝。 5 顯然,如果n=m+1,那么由於一次最多只能取m個,所以,無論先取者拿走多少個, 6 后取者都能夠一次拿走剩余的物品,后者取勝。因此我們發現了如何取勝的法則:如果 7 n=(m+1)r+s,(r為任意自然數,s≤m),那么先取者要拿走s個物品,如果后取者拿走 8 k(≤m)個,那么先取者再拿走m+1-k個,結果剩下(m+1)(r-1)個,以后保持這樣的 9 取法,那么先取者肯定獲勝。總之,要保持給對手留下(m+1)的倍數,就能最后獲勝。 10 這個游戲還可以有一種變相的玩法:兩個人輪流報數,每次至少報一個,最多報十 11 個,誰能報到100者勝。 12 */ 13 #include <iostream> 14 #include <cstdio> 15 16 using namespace std; 17 18 int main() 19 { 20 int n, m, T; 21 scanf("%d", &T); 22 while(T--) 23 { 24 scanf("%d%d", &n, &m); 25 if(n % (m + 1)) 26 printf("Win\n"); 27 else 28 printf("Lose\n"); 29 } 30 return 0; 31 }