跳转至

威佐夫博弈

www.luogu.com.cn

题目描述

有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法

  • 一是可以在任意的一堆中取走任意多的石子;

  • 二是可以在两堆中同时取走相同数量的石子。

最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。

首先我们规定: 后手必胜态被称为奇异局势,结论是,如果这是一个奇异局势,那么第一个数是两数差值乘大黄金比(\(\frac{\sqrt5 +1}{2}\))下取整。

证明

未知

signed main(){
    cin>>a>>b;
    if(a>b)swap(a,b);
    double f= 1.00*(sqrt(5)+1)/2;
    int c=b-a;
    if(a==(int)(1.00*f*c))cout<<0<<endl;
    else cout<<1<<endl;

    return 0;
}