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
213100000
sample output
second winsecond win
first win
source
ecjtu 2008 autumn contest
有一堆個數為n的石子,遊戲雙方輪流取石子,滿足:
1)先手不能在第一次把所有的石子取完;
2)之後每次可以取的石子數介於1到對手剛取的石子數的2倍之間(包含1和對手剛取的石子數的2倍)。
約定取走最後乙個石子的人為贏家
這個遊戲叫做fibonacci nim,肯定和fibonacci數列:
f[n]:1,2,3,5,8,13,21,34,55,89,…
有密切的關係。如果試驗一番之後,可以猜測:先手勝當且僅當n不是fibonacci數。換句話說,必敗態構成fibonacci數列。
#include #include #include #include#include#include#include#include#define ll long long
using namespace std;
ll f[60];
int main()
if(flag==1)
cout<<"second win"<
hdu 2516 斐波那契博弈)
思路 網上大牛說是著名的斐波那契博弈模型 首先 2個石頭肯定是必敗點,3個石頭也是必敗點,然後開始看後面,4個石頭時,可以去乙個使對手到必敗點,而對手在這種情況下在必敗點是不能贏得,所以4是必勝點。但是後面5個石頭的情況就不同了,因為5個石頭 你肯定不會sb的走到4這個必勝點讓對手贏,但是你發現走到...
hdu 2516 斐波那契博弈)
思路 網上大牛說是著名的斐波那契博弈模型 首先 2個石頭肯定是必敗點,3個石頭也是必敗點,然後開始看後面,4個石頭時,可以去乙個使對手到必敗點,而對手在這種情況下在必敗點是不能贏得,所以4是必勝點。但是後面5個石頭的情況就不同了,因為5個石頭 你肯定不會sb的走到4這個必勝點讓對手贏,但是你發現走到...
hdu2516斐波那契博弈
剛開始想用sg函式做,想了半天沒一點思路啊。原來這是乙個新題型,斐波那契博弈 斐波那契博弈模型 有一堆個數為 n 的石子,遊戲雙方輪流取石子,滿足 1.先手不能在第一次把所有的石子取完 2.之後每次可以取的石子數介於1到對手剛取的石子數的2倍之間 包含1和對手剛取的石子數的2倍 約定取走最後乙個石子...