有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都有對應的方法拿到最後...