经典威佐夫博弈问题。

  • 有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

  • 公式: p =[(b-a)(1+√5)/2] (b>a)


题目:飞机票直达(J - 组合

代码:

Memory: 176 KB
Time: 16 MS
Language: C++
Result: Accepted
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
    int a, b;
    while(scanf("%d%d", &a, &b)!=EOF)
    {
        if(a>b){int x=a;a=b;b=x;}
        int t=b-a;
        int p=t*(1.0+sqrt(5.0))/2.0;
        if(p==a)printf("0\n");  //奇异局势
        else printf("1\n");     //非奇异局势
    }
    return 0;
}