您的位置:首页 > 其它

POJ 1067 取石子游戏

2012-08-07 21:50 232 查看
取石子游戏

威佐夫博弈,对于给定的两堆石子个数(a , b)a <= b ,如果现在的局势(a,b)为奇异局势,那么先手必输,否则先手必赢。判断奇异局势的公式: ak = k*(1+sqrt(5))/2 , bk = ak + k.先求出k,然后求出ak,判断是否相等即可。如果相等为奇异局势,否则非奇异局势。威佐夫博弈及其它博弈介绍

#include <iostream>
#include <cmath>
using namespace std ;

int main(){
int a ;
int b ;
while(cin>>a>>b){
if(a > b){
a ^= b ;
b ^= a ;
a ^= b ;
}

int k = b - a ;
if(floor(k * (1 + sqrt(5.0))/2) == a)
cout<<0<<endl ;
else cout<<1<<endl ;
}
return 0 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: