描述
一天,tt在寢室閒著無聊,和同寢的人玩起了取石子遊戲,而由於條件有限,他/她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為n(1<=n<=1000000),兩個人輪番取出其中的若干個,每次最多取m個(1<=m<=1000000),最先把石子取完者勝利。我們知道,tt和他/她的室友都十分的聰明,那麼如果是tt先取,他/她會取得遊戲的勝利麼? 輸入
第一行是乙個正整數n表示有n組測試資料
輸入有不到1000組資料,每組資料一行,有兩個數n和m,之間用空格分隔。
輸出對於每組資料,輸出一行。如果先取的tt可以贏得遊戲,則輸出「win」,否則輸出「lose」(引號不用輸出)
樣例輸入
21000 1
1 100
樣例輸出
losewin
巴什博奕(bash game
):
首先我們來玩乙個比較古老的報數遊戲。a和b
一起報數,每個人每次最少報乙個
,最多報
4個。輪流報數
,看誰先報到
30.如果不知道巴什博弈的可能會覺得這個是個有運氣成分的問題,但是如果知道的人一定知道怎樣一定可以贏。
比如a先報數的話,那麼
b一定可以贏
(這裡假定
b知道怎麼正確的報數
)b可以這樣報數
,每次報
5-k(a)個數,
其中k(a)是a
報數的個數這樣的話沒一次
兩人報完數之後會變成5 10 15 20 25 30
這樣是不是
b一定會贏呢
?是不是有一種被欺騙的感覺呢
?好吧下面我們來看看這個原理。我們先看下乙個一眼就能看出答案的例子 比如說我們報到
5(4+1),
每次報最多報4個
,最少報1個
.那麼是不是後者一定可以贏呢?答案是肯定的。好了到這巴什博弈的精髓基本就
ok了。
那麼如果我們要報到n+1,
每次最多報n個
,最少報
1個的話
,後者一定能夠贏。
現在我們需要報數到n,
而每次最多報數m個
,最少報數1個
.我們可以化成這樣
n = k*(1+m)+r(0 <= r <= m)這樣的話如果
r不等於
0那麼先手一定會贏,為什麼呢?首先先手報r個
,那麼剩下k倍
(1+m)個數,
那麼我們每次報數
1+m-k(b)
個數就一定能保證最後剩下
1+m個
,那麼就到了上面我們說的那個了
,先手就一定會贏,如果
r=0那麼後手一定會贏
,道理一樣的。
#includeint main()
return 0;
}
NYOJ 23 取石子(一)
時間限制 3000 ms 記憶體限制 65535 kb難度 2 描述 一天,tt在寢室閒著無聊,和同寢的人玩起了取石子遊戲,而由於條件有限,他 她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為n 1 n 1000000 兩個人輪番取出其中的若干個,每次最多取m個 1 m 1000...
nyoj 23 取石子(一)
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 一天,tt在寢室閒著無聊,和同寢的人玩起了取石子遊戲,而由於條件有限,他 她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為n 1 n 1000000 兩個人輪番取出其中的若干個,每次最多取m個 1 m 100...
nyoj23取石子(一)
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 一天,tt在寢室閒著無聊,和同寢的人玩起了取石子遊戲,而由於條件有限,他 她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為n 1 n 1000000 兩個人輪番取出其中的若干個,每次最多取m個 1 m 100...