51Nod1072 威佐夫遊戲

2022-05-19 19:57:48 字數 539 閱讀 3378

有2堆石子。a b兩個人輪流拿,a先拿。每次可以從一堆中取任意個或從2堆中取相同數量的石子,但不可不取。拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出2堆石子的數量,問最後誰能贏得比賽。

列舉小數字的a,b,發現必敗態有如下規律:

於是可以遞推(1,2),(3,5)(4,7),(6,10)...

暴力可做,另有公式較小數a==(b-a)*1.618時為必敗態。

1.618具體為(sqrt(5)+1)/2,v2必須用這個公式和高精,未做,日後再做。

#include#include#include#include#define ll long long

using namespace std;

ll t,a,b;

int c[5000020];

bool f[50000200];

ll abs(ll x)

void fun() }}

int main()

return 0;

}

51Nod 1072 威佐夫遊戲

有2堆石子。a b兩個人輪流拿,a先拿。每次可以從一堆中取任意個或從2堆中取相同數量的石子,但不可不取。拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出2堆石子的數量,問最後誰能贏得比賽。例如 2堆石子分別為3顆和5顆。那麼不論a怎樣拿,b都有對應的方法拿到最後1顆。...

51nod 1072 威佐夫遊戲

有2堆石子。a b兩個人輪流拿,a先拿。每次可以從一堆中取任意個或從2堆中取相同數量的石子,但不可不取。拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出2堆石子的數量,問最後誰能贏得比賽。例如 2堆石子分別為3顆和5顆。那麼不論a怎樣拿,b都有對應的方法拿到最後1顆。...

51Nod 1072 威佐夫遊戲

題目 有2堆石子。a b兩個人輪流拿,a先拿。每次可以從一堆中取任意個或從2堆中取相同數量的石子,但不可不取。拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出2堆石子的數量,問最後誰能贏得比賽。例如 2堆石子分別為3顆和5顆。那麼不論a怎樣拿,b都有對應的方法拿到最後...