链接:https://ac.nowcoder.com/acm/contest/3006/E
牛牛战队的三个队员在训练之余会自己口胡了一些题当做平时的益智游戏。有一天牛可乐想出了一个小游戏给另外两名队员玩,游戏规则如下:
- 初始一共有nn张卡牌
- 先手第一步最少要拿11张牌,最多要拿n-1n−1张牌。
- 接下来每一步,双方最少要拿11张牌,最多拿等同于上一步对方拿的牌数的牌。
- 拿走最后一张牌的人将取得游戏的胜利。
你作为旁观者,看着他们玩的很开心,想参与到这场游戏中来,赌一赌谁会能赢。
输入描述:
输入数据包含一个整数nn(2 \leq n \leq 10^{18}2≤n≤1018),表示初始卡牌张数。
输出描述:
如果先手有必胜策略,输出Bob,否则输出Alice。
示例1
输入
2
输出
Alice
说明
先手必须拿走一张牌,然后后手拿走了另一张牌,游戏结束。
挺有意思的一道博弈
代码:
#include<bits/stdc++.h>
using namespace std;
long long t,n,m,s;
char x[100005];
char y[100005];
int main()
{
cin>>n;
while(n%2==0&&n>4)
{
n/=2;
}
if(n%2==1)
cout<<"Bob";
else if(n<=4)
cout<<"Alice";
}