1025. Divisor Game
Question
Alice and Bob take turns playing a game, with Alice starting first.
Initially, there is a number N on the chalkboard. On each player’s turn, that player makes a move consisting of:
- Choosing any x with 0 < x < N and N % x == 0.
- Replacing the number N on the chalkboard with N - x.
Also, if a player cannot make a move, they lose the game.
Return True if and only if Alice wins the game, assuming both players play optimally.
Example 1:
Input: 2
Output: true
Explanation: Alice chooses 1, and Bob has no more moves.
Example 2:
Input: 3
Output: false
Explanation: Alice chooses 1, Bob chooses 1, and Alice has no more moves.
Note:
- 1 <= N <= 1000
Summary
Given an odd number, after subtract a factor, it can only become an even number.
Given an even number, after subtract a factor, it can become either odd or even number.
                +---+
                V   |
(ODD) <====> (EVEN) |
                |   |
                +---+
If we can finally make Alice to meet number 2 before her start, she will always win. So we need to make Bob always face odd number.
Given an even number, Alice can make it odd and pending Bob to take number.
Given an odd number, Alice cannot make it odd.
Solution
class Solution {
public:
    bool divisorGame(int N) {
        return N % 2 == 0;
    }
};

