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. `1 <= N <= 1000`

#### EXPLANATION:

[2]我们可以怎么计算呢，那么就是A可以只取一个，那么这时候，就剩下了tmp[1]是false，那么B就必然是输了。所以[2]就是true。

[3]的情况我们可以考虑到就是没有办法只能是输，结果为false。

#### SOLUTION:

``````class Solution {
public boolean divisorGame(int N) {
boolean[] temp = new boolean[N + 1];
temp[1] = false;
for (int i = 2; i <= N; i++) {//填充整个数组
for (int j = 1; j < i; j++) {//遍历可能的x的值
if (i % j == 0 && !temp[i - j]) {//如果x符合条件，既能整除，同时能让B输。
temp[i] = true;
break;
}
}
}
return temp[N];
}
}
``````
>