luogu P2252 取石子游戏(威佐夫博弈)

题意

题解

对于像我这种不知道威佐夫博弈的人来说,拿到题就开始打表了。

然而打完后并没有发现什么。

然后才知道是威佐夫博弈。

结论是当(int)((b-a)*((sqrt(5.0)+1.0)/2.0))=a时为必败局面。

否则为必胜局面。

推荐证明

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<cstdio>
 5 #include<algorithm>
 6 using namespace std;
 7 long long a,b;
 8 int main(){
 9     scanf("%lld%lld",&a,&b);
10     if(a>b)swap(a,b);
11     if((long long)((b-a)*(sqrt(5.0)+1.0)/2.0)==a)printf("0");
12     else printf("1");
13     return 0;
14 }

 

posted @ 2018-09-02 10:56  Xu-daxia  阅读(138)  评论(0编辑  收藏  举报