只有一堆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...