巴什博奕詳解

2021-10-19 15:39:15 字數 916 閱讀 9313

只有一堆n 個石子,兩個人輪流從這堆石子中取物,規定每次至少取乙個,最多取 m 個。最後取光者得勝。兩人均採用最優方案

假設雙方分別為a,b;且指定a為先手。

如果是 n <= m 的情況下:

先手a一次即可取完,a必勝。

故重點討論 n > m 的情況

當 n = m+1 時:

因為a至多取 m 顆,最少取 1 顆;在此情況下b取時必能取完,故b必勝。

此時推知 m+1 顆石子組合時,可以保證先手必敗:

當a取任意 k(1 <= k <= m) 顆時,b只要取走 (m+1)-k 顆,則始終可以保證為 m+1 的倍數

因此,當 n = k(m+1) 時:

後手b必能取得最後一顆,b必勝。

進一步可知,

當 n = k(m+1) + s ,(1 <= s <= m) 時:

先手a首輪取走 s 顆,則剩餘了 k*(m+1) 顆,此時b成為先手,則a必勝。

歸納可知

當 n <= m 時,先手a必勝。

當 n = m + 1 時,後手b必勝。

當 n = k * (m+1) 時,後手b必勝。

當 n = k * (m+1) + s 時,先手a必勝。

可簡化為後兩條規律。

#include

#include

using

namespace std;

intmain()

return0;

}

巴什博奕(Bash Game)

巴什博弈 bash game,同餘理論 只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。顯然,如果n m 1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則 如果n m 1 ...

NYOJ 巴什博奕 bash game

時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 一天,tt在寢室閒著無聊,和同寢的人玩起了取石子遊戲,而由於條件有限,他 她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為n 1 n 1000000 兩個人輪番取出其中的若干個,每次最多取m個 1 m 100...

題目23 巴什博奕

時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 一天,tt在寢室閒著無聊,和同寢的人玩起了取石子遊戲,而由於條件有限,他 她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為n 1 n 1000000 兩個人輪番取出其中的若干個,每次最多取m個 1 m 100...