ACM 数论-博弈 (比赛用)

1.    Bash博弈(巴什博弈)
      只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为胜。
      /*
      if(n%(m+1)==0)  
      cout<<"后手必胜"<<endl;
      else 
      cout<<"先手必胜"<<endl;
      */

2.   威佐夫博弈(Wythoff Game):
      有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者      胜利。
      
      若两堆物品的初始值为(x,y),且x<y,则另z=y-x;
      记w=(int)[((sqrt(5)+1)/2)*z  ];
      若w=x,则先手必败,否则先手必胜。
       /*
       while(cin>>n1>>n2)
       {
        if(n1>n2)  swap(n1,n2);              //必须是看小的数是否等于那个公式
        temp=floor((n2-n1)*(1+sqrt(5.0))/2.0);
        if(temp==n1) cout<<"后手必胜"<<endl;
        else cout<<"先手必胜"<<endl;
        }
       */

猜你喜欢

转载自blog.csdn.net/qq_40763929/article/details/81507230