有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次最少拿1顆,最多拿k顆,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n和k,問最後誰能贏得比賽。
必勝策略:令 n = (k + 1) * r + s ; a第一次取s個,讓b面對k+1倍數的局面,如果b取m個則a取k+1 - m個。
#include #include using namespace std;
int main()
} return 0;
}
有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次只能拿1,3,4顆,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n,問最後誰能贏得比賽。
分析:連續找一些書測試,可以發現當 n % 7 == 0 || == 2 時b勝,其餘情況a勝
#include using namespace std;
int main()
return 0;
}
有n堆石子。a b兩個人輪流拿,a先拿。每次只能從一堆中取若干個,可將一堆全取走,但不可不取,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n及每堆石子的數量,問最後誰能贏得比賽。
例如:3堆石子,每堆1顆。a拿1顆,b拿1顆,此時還剩1堆,所以a可以拿到最後1顆石子。
分析:尼姆博弈,對於乙個nim遊戲的局面(a1,a2,...,an),它是p-position當且僅當a1^a2^...^an=0,其中^表示異或(xor)運算.
#include using namespace std;
int main()
return 0;
}
博弈論 取石子問題
有一種很有意思的遊戲,就是有物體若干堆,可以是火柴棍或是圍棋子等等均可。兩個人輪流從堆中取物 體若干,規定最後取光物體者取勝。這是我國民間很古老的乙個遊戲,別看這遊戲極其簡單,卻蘊含著深 刻的數學原理。下面我們來分析一下要如何才能夠取勝。一 巴什博弈 bash game,同餘理論 只有一堆n個物品,...
博弈論 取石子問題
有一種很有意思的遊戲,就是有物體若干堆,可以是火柴棍或是圍棋子等等均可。兩個人輪流從堆中取物 體若干,規定最後取光物體者取勝。這是我國民間很古老的乙個遊戲,別看這遊戲極其簡單,卻蘊含著深 刻的數學原理。下面我們來分析一下要如何才能夠取勝。一 巴什博弈 bash game,同餘理論 只有一堆n個物品,...
博弈論 取石子(一)
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述一天,tt在寢室閒著無聊,和同寢的人玩起了取石子遊戲,而由於條件有限,他 她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為n 1 n 1000000 兩個人輪番取出其中的若干個,每次最多取m個 1 m 1000...