POJ1067(威佐夫博弈)

来源:互联网 发布:淘宝拒签后 退款 编辑:程序博客网 时间:2024/06/03 09:30

有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者胜利。

直接说结论了,若两堆物品的初始值为(x,y),
且x< y ,则另z=y-x;

记w=(int)512z

若w=x,则先手必败,否则先手必胜。
本题是威佐夫博弈裸题
直接上代码:
code:

//威佐夫博弈#include<cstdio>#include<cmath>int main(){    int a,b,c;    while(scanf("%d%d",&a,&b)!=EOF)    {        if(a>b)        {            c=a;            a=b;            b=c;        }        c=b-a;        int w=(int )(((sqrt(5.0)+1.0)/2.0)*c);        if(w==a)            printf("0\n");        else            printf("1\n");    }    return 0;}
原创粉丝点击