51nod 1066 Bash遊戲 博弈論

2021-09-19 03:25:26 字數 739 閱讀 7891

有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次最少拿1顆,最多拿k顆,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n和k,問最後誰能贏得比賽。

例如n = 3,k = 2。無論a如何拿,b都可以拿到最後1顆石子。

第1行:乙個數t,表示後面用作輸入測試的數的數量。(1 <= t <= 10000)

第2 - t + 1行:每行2個數n,k。中間用空格分隔。(1 <= n,k <= 10^9)

共t行,如果a獲勝輸出a,如果b獲勝輸出b。
4

3 24 2

7 38 3

baa

b

這個問題拿到手準備dp來著  好奇心驅使我查了一下 bash博弈  發現給出的解題方法很簡單  就放棄dp了  

關於bash博弈  我的理解是這樣的   n個石子  每次拿1到k個  你想拿到第n個  就得讓對手拿到(n-k-1)個 他拿到(n-k-1)個的時候最多能拿到(n-1)個 所以 第n個肯定你可以拿到   所以要保證 每次給對手剩下的要是(k+1)的倍數  這樣問題就很簡單了 將石子數直接模除(k+1)有餘數先手勝 沒餘數 後手勝

#includeusing namespace std;

int main()

return 0;

}

51nod 1066 Bash遊戲 Bash博弈

1066 bash遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 收藏關注有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次最少拿1顆,最多拿k顆,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n和k,問最後誰能贏得比賽。例如n ...

51nod 1066 Bash遊戲 博弈

1066 bash遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次最少拿1顆,最多拿k顆,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n和k,問最後誰能贏得比賽。例如n 3,k ...

51Nod 1066 Bash遊戲(博弈)

基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次最少拿1顆,最多拿k顆,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n和k,問最後誰能贏得比賽。例如n 3,k 2。無論a如何拿,b都可...