有一堆石子共有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都可...