HDU 2516 取石子遊戲 (博弈論)

2021-06-22 15:24:14 字數 813 閱讀 9004

problem description

1堆石子有n個,兩人輪流取.先取者第1次可以取任意多個,但不能全部取完.以後每次取的石子數不能超過上次取子數的2倍。取完者勝.先取者負輸出"second win".先取者勝輸出"first win".

input

輸入有多組.每組第1行是2<=n<2^31. n=0退出.

output

先取者負輸出"second win". 先取者勝輸出"first win". 

參看sample output.

sample input

2

13100000

sample output

second win

second win

first win

source

ecjtu 2008 autumn contest

解題思路:

這題沒法用sg直接求了,資料量太大了,而且sg會受上次的影響,所以不一定。

因此,只能打表找規律,找到規律發現如果滿足斐波那契數列 f[n]=f[n-1]+f[n-2] 的數列,second win 否則 ,first win

解題**:

#include #include #include using namespace std;

set mys;

void ini()

}int main()

return 0;

}

博弈論 取石子遊戲 HDU 2516

題解 列舉一下從1到13左右會發現如果當前是斐波那契數必輸 n 2時輸出second n 3時也是輸出second n 4時,第乙個人想獲勝就必須先拿1個,這時剩餘的石子數為3,此時無論第二個人如何取,第乙個人都能贏,輸出first n 5時,first不可能獲勝,因為他取2時,second直接取掉...

博弈論 HDU 2516 取石子遊戲

n 個石子,兩人輪流取.先取者第1次可以取任意多個,但不能全部取完.以後每次取的石子數不能超過上次取子數的2倍。取完者勝.先取者負輸出 second win 先取者勝輸出 first win n 為斐波那契數先手必敗,否則先手必勝 dalao的證明 include include include d...

HDU 2516 取石子遊戲(博弈)

思路 手推了一下,發現n是斐波那契數時是必敗態 includeusing namespace std define ll long long int fact 105 void init int main description 1堆石子有n個,兩人輪流取.先取者第1次可以取任意多個,但不能全部取完...