nyoj 23 取石子(一)

2021-06-25 16:08:39 字數 1494 閱讀 4686

描述

一天,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

巴什博奕(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...