A.取因数

题目链接:https://ac.nowcoder.com/acm/contest/11176/A

题意:

Alice 和 Bob 玩取因数游戏,首先在纸上写下一个数字 n,两人轮流选择 n 的一个正因数(设为 f),然后将 n 改写为 n-t,谁先写 0 谁就输。Alice 先手,给定 \(n(1\le n \le{10^3})\),输出谁会赢。

思路:

若当前数为奇数,若为 1,则只能将其改写为 0,必败,若为其他数,则
要么将其改为 0(减去自身),要么将其改为一个正偶数(奇数的因子都是奇数,奇数减奇数为偶数),而若当前数为偶数,只需将其减 1 使其变为比当前数小 1 的奇数即可,因此若当前数为偶数则必胜,为奇数则必败。Alice 先手,因此 n 为偶数则输出 Alice,否则输出 Bob。

代码:

#include <iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    if (n & 1)
        cout << "Bob";
    else
        cout << "Alice";
}

总结:

posted @ 2021-07-10 17:17  Wajor  阅读(79)  评论(0)    收藏  举报