巴什博奕(Bash Game)

2021-10-17 14:43:34 字數 853 閱讀 7965

巴什博弈(bash game,同餘理論):只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。

顯然,如果n=m+1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次
拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則:如果n=(m+1)r+s,(r為任意自然數,s

≤m),那麼先取者要拿走s個物品,如果後取者拿走k(≤m)個,那麼先取者再拿走m+1-k個,結果剩下

(m+1)(r-1)個,以後保持這樣的取法,那麼先取者肯定獲勝。總之,要保持給對手留下(m+1)的倍

數,就能最後獲勝。

這個遊戲還可以有一種變相的玩法:兩個人輪流報數,每次至少報乙個,最多報十個,誰能報到100

者勝。**:

int

bash_game

(int n,

int m)

//是否先手有必贏策略

#include

using

namespace std;

typedef

long

long ll;

const

int n =

1e7+7;

#define inf 0x3f3f3f3f

#define jiechufengyin std::ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);

ll n, k;

intmain()

return0;

}

其餘講解:

參考文章:

NYOJ 巴什博奕 bash game

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

巴什博弈 Bash Game

問題模型 只有一堆n個物品,兩個人輪流從這堆物品中取物品,規定每次至少取乙個,最多取m個。解決思路 若n m 1時,由於先手最多只能取m個,所以無論先手怎麼取,剩下的都可以讓後手取完,即後手必勝。假設n m 1 r s。1 當s不等於0,先手要拿走s個物品,此時後手處於在剩下 m 1 r個物品的狀態...

巴什博弈 Bash Game

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