Skip to content

拓展威佐夫博弈 ​

按照上面在棋盘上移动棋子的方式,每次向左下移动可以看作是向左移动 $ dx $ ,向下移动 $ dy $,要求 $ |dx?dy|<1 $。那么如果将这个要求扩展到 $ |dx?dy|< d $ 呢?我们同样可以得出第 $ k $ 个奇异局势 $ (x,y) $ 为前 $ 0?k?1 个奇异局势中没有出现过的最小自然数,个奇异局势中没有出现过的最小自然数, y=x+d?k $ 。根据Betty定理同样能得出第 $ k $ 个奇异局势为 $ ( \frac {2-d+ \sqrt {d^2+4}}{2}k ,\frac{2+d+ \sqrt {d^2+4}}{2}k ) $

给你两堆石子,每次可以单独拿一堆中的任意值,或者两堆都拿,但是两堆拿的值需满足 $ |x-y|<=k $

本题就是拓展威佐夫博弈,d取k+1

cpp
void solve(){
    int a,b,K;
    cin>>a>>b>>K;
    int d=K+1;
    if(a<b)swap(a,b);
    int k=(a-b)/d;
    int x=(2+d+sqrt(d*d+4))/2*k,y=(2-d+sqrt(d*d+4))/2*k;
    if(x==a&&y==b)cout<<"0\n";
    else cout<<"1\n";
}