有n
'>n
堆石子,兩人輪流取石子,每次可以將一堆全部拿走,也可以選擇其中y
'>y
個拿,但是要求y
'>y
與這堆石子的總個數互質。求誰會勝利。
明顯的博弈論之s
g'>sg
函式。
我們可以發現,質數的s
g'>sg
值就等於上乙個質數的s
g'>sg
值加一,而合數的s
g'>
sg值就是它的最小質因子的s
g'>sg
值,所以,我們先預處理出所有質數(一遍 埃拉託斯特尼篩法 後順便求出每個數的s
g'>
sg值),再遍讀入遍異或,再判斷是0
'>0
是1'>
1即可。
時間複雜度:o(t
n2)'>o(tn2),但是很多時間達不到n
2'>n2
,平均只有o(t
n)'>o(tn)
。
#include #includeusing
namespace
std;
const
int n=1000000
;int t,n,sg[n+50
],k,ans,x;
void find_prime() //
篩質數
return;}
intmain()
if (ans) printf("
alice\n");
else printf("
bob\n");
}return0;
}
Foreign 石子遊戲 博弈論
輸出t行,表示每組的答案。31 這顯然是一道博弈論的題目。我們發現這是乙個樹結構,仔細看了一下,發現這顯然是乙個階梯nim的模型。我們將所有和同n奇偶的值xor起來就可以得到sg。我們先判斷一下,若sg 0則顯然必敗,否則必勝。然後我們開始計算方案,列舉每乙個節點,目標顯然就是要讓sg 0。由於xo...
取石子 博弈論 Nim遊戲
題目大意 有n堆石子,第i堆有ai個。每次可以選擇乙個x,選擇乙個質數p滿足p x,選擇乙個0 y a x 然後將y個石子從x移動到x p。問先手有多少種第一步移動的測率能夠必勝?答案除以總方案數輸出。n 106,0 ai 109n 10 6,0 ai 10 9題解 從最簡單的情況推導,什麼情況下是...
博弈論 取石子問題
有一種很有意思的遊戲,就是有物體若干堆,可以是火柴棍或是圍棋子等等均可。兩個人輪流從堆中取物 體若干,規定最後取光物體者取勝。這是我國民間很古老的乙個遊戲,別看這遊戲極其簡單,卻蘊含著深 刻的數學原理。下面我們來分析一下要如何才能夠取勝。一 巴什博弈 bash game,同餘理論 只有一堆n個物品,...