威佐夫博弈¶
题目描述¶
有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法
-
一是可以在任意的一堆中取走任意多的石子;
-
二是可以在两堆中同时取走相同数量的石子。
最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。
首先我们规定: 后手必胜态被称为奇异局势,结论是,如果这是一个奇异局势,那么第一个数是两数差值乘大黄金比(\(\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;
}