牛客第五场

------------恢复内容开始------------

E

博弈:

n=1:胜
n=2:败n=2:败n=2:败,只能是自己拿一个,对方拿一个,然后GG
n=3:胜n=3:胜n=3:胜,自己拿一个,令对方到达n=2n=2n=2的必败点
n=4:败n=4:败n=4:败,如图红色箭头所指两种情况,都是必败状态
n=5:胜n=5:胜n=5:胜,拿 111 个,令对方到达n=4n=4n=4的必败点
n=6:胜n=6:胜n=6:胜,拿 222 个,令对方到达n=4n=4n=4的必败点
n=7:胜n=7:胜n=7:胜,拿 333 个,令对方到达n=4n=4n=4的必败点
n=8:败n=8:败n=8:败,无论怎么拿,都会达到对方的必胜点。
由此我们可以发现,若当前必败点为 xxx,距离下一个必败点的距离,就是 2x2x2x 位置
也就是必败点为:2,4,8,16,32,...,2n2,4,8,16,32,...,2^n2,4,8,16,32,...,2

正解:但凡是 2^n
都是后手赢

#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    long long n;
    scanf("%lld", &n);
    long long tmp = 2;
    for (int i = 1; i <= 60; i++)
    {
        if (tmp == n)
        {
            printf("Alice\n");
            return 0;
        }
        tmp = tmp * 2;
    }
    printf("Bob\n");
    return 0;
}

  三分查找,简单题;

附上之前学习的,顺便贴到之前学习的链接:https://www.cnblogs.com/hgangang/p/11787734.html

------------恢复内容结束------------

猜你喜欢

转载自www.cnblogs.com/hgangang/p/12315856.html