POJ 2484 A Funny Game <简单博弈>

来源:互联网 发布:人人店微分销源码下载 编辑:程序博客网 时间:2024/05/25 23:28

题目链接

分析:
显然当n<3时,Alice必胜。当n3时,根据对称性,后手总可以根据先手取coin的方法决定自己取coin的方法,所以Bob必胜,Bob的具体策略如下:

将coin编号为c1,c2,,cn1

n为奇数时,令t=n12。若第一步先手取ck,则后手第一步取c(k+t)%nc(k+t+1)%n,若先手第一步取ck,c(k+1)%n,则后手第一步取c(k+t+1)%n。然后若先手取的coin中包含ck,则后手必取c(k+t+1)%n

n为偶数时,令t=n/2。若先手取的coin中包含ck,则后手必取c(k+t)%n

代码:

#include <iostream>using namespace std;const string name[2]={"Alice","Bob"};int main(){    int n;    while(cin>>n,n) cout<<name[n>2]<<endl;    return 0;}
原创粉丝点击