第二个。。

POJ-1067 取石子游戏

这题就是模板(威佐夫博弈)。
两堆石子,两种取法:一是取一堆里面的任意多的石子;二是在两对里面取任意多的相同数量的石子。
这是典型的威佐夫博弈。

先给一个double变量x赋值恒定的值(1+√5)/2(注意数据类型的转换)。

a,b两堆石子:
让a小于b(交换),然后(b-a)乘以神奇的x(数据类型转换成整形)后与较小的数a比较。
同样利用结论:如果相等则先选者处于P(必败态)状态;否则处于N状态(必胜态)。

#include<bits/stdc++.h>
using namespace std;
const double x = (1.0+sqrt(5.0))/2.0;
int Wgame(int a, int b){
    if(a>b){
        swap(a, b);
    }
    if(a==(int)((b-a)*x)) return 0;
    else return 1;
}
int main()
{
    int n,m;
    while(cin>>n>>m){
        cout<<Wgame(n, m)<<endl;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值