HDU 2516 取石子遊戲(斐波那契博弈)

2021-08-15 15:34:37 字數 456 閱讀 1405

看這道題之前先看看什麼叫斐波那契博弈:

斐波那契博弈

需要知道「zeckendorf定理」(齊肯多夫定理):

任何正整數可以表示為若干個不連續的fibonacci數之和。

總結一下就是如果給定的數是斐波那契數列中的乙個,則先手必敗,否則先手必勝,沒有什麼道理的裸題:

#include#include#include#include#include#include#include#include#includeusing namespace std;

int main()

if(a[i] > n)//省去不必要的查詢

break;

}if(flag)printf("second win\n");

else printf("first win\n");

}return 0;

}

HDU 2516 取石子遊戲(斐波那契博弈)

本題是傳說中的斐波那契博弈,即 必敗點形成了fibonacci數列,通過找規律就可以看出來的 為何比賽時木有發現 problem description 1堆石子有n個,兩人輪流取.先取者第1次可以取任意多個,但不能全部取完.以後每次取的石子數不能超過上次取子數的2倍。取完者勝.先取者負輸出 sec...

HDU2516 取石子遊戲 斐波那契博弈

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

取石子遊戲 HDU2516(斐波那契博弈)

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