牛牛爱博弈_牛客练习赛67

题目链接:https://ac.nowcoder.com/acm/contest/6885/C

题意

  • 取石子游戏。
  • 开始有n个石子,每次可以取1,2,4,8,……,2^k个石子,取完者获胜

思路

  • 画个表格,传递必败态
1 2 3 4 5
Y Y N Y Y
6 7 8 9 10
N Y Y N Y
  • n=1、2时,先手必赢。
  • n=3时,先手取1 2都输,必输
  • n=4时,先手取1,把必败态传给后手,先手必赢
  • n=5时,先手取2,把必败态传给后手,先手必赢
  • n=6时,先手取得数没有3的倍数,所以不能把必败态传给后手,后手反而可以将必败态传给先手,所以先手必输
  • ……

AC代码

#include
#define ll long long
using namespace std;
int main(){
    int T;scanf("%d",&T);
    while(T--){
        int n;scanf("%d",&n);
        if(n%3==0)printf("Frame\n");
        else printf("Alan\n");
    }
    return 0;
}

 

你可能感兴趣的:(博弈)