其他分享
首页 > 其他分享> > Codeforces Round #726 (Div. 2) D题解

Codeforces Round #726 (Div. 2) D题解

作者:互联网

传送门

题意

\(Alice\)和\(Bob\)在玩游戏。
他们从一个正整数\(n\)开始轮流对它进行运算。每个回合,玩家可以从\(n\)中减去一个非\(1\)或\(n\)的因数。在他/她的回合中不能移动的玩家输。\(Alice\)总是先动。
注意,他们在每个回合中都要减去当前数字的除数。
你被要求找出如果两名玩家都选择最佳策略,谁将赢得游戏。

思路

证明:

我们先考虑\(n\)为奇数的情况:

综上所述若\(n\)为奇数,则先手必输。

在考虑偶数的情况:

综上所述若\(n\)不被\(2\)的幂次整除先手必赢,若\(n\)为\(2\)的奇次幂先手必输,若\(n\)为\(2\)的偶次幂先手必赢。

证毕。

代码

int main() 
{
    int T;
    cin >> T;
    while (T -- ) 
    {
        int n;
        cin >> n;
        
        if (n % 2 != 0) puts("Bob");
        else 
        {
            int cnt = 0;
            while (n % 2 == 0) 
            {
                cnt ++ ;
                n /= 2;
            }
            if (n > 1) puts("Alice");
            else if (cnt % 2 == 0) puts("Alice");
            else puts("Bob");
        }
    }
 
    return 0;
}

标签:puts,奇数,题解,Alice,必赢,726,先手,Div,必输
来源: https://www.cnblogs.com/wanshu/p/14910767.html