LeetCode //C - 1025. Divisor Game

1025. Divisor Game

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 integer 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: n = 2
Output: true
Explanation: Alice chooses 1, and Bob has no more moves.

Example 2:

Input: n = 3
Output: false
Explanation: Alice chooses 1, Bob chooses 1, and Alice has no more moves.

Constraints:
  • 1 <= n <= 1000

From: LeetCode

Link: 1025. Divisor Game


Solution:

Ideas:

The result only depends on whether n is even or odd.

  • If n is even, Alice can always choose an odd divisor x, so n - x becomes odd for Bob.
  • If n is odd, every divisor x of n is also odd, so n - x becomes even for Bob.

So:

  • starting with an even number is a winning position
  • starting with an odd number is a losing position

Therefore, Alice wins iff n is even.

Code:
c 复制代码
bool divisorGame(int n) {
    return (n % 2 == 0);
}
相关推荐
菜菜的顾清寒1 小时前
力扣100(20)旋转图像
算法·leetcode·职场和发展
深念Y1 小时前
王者荣耀与英雄联盟数值设计对比:穿透、乘算与加算、增伤乘算更厉害,减伤加算更厉害
数学·算法·游戏·建模·游戏策划·moba·数值
budingxiaomoli2 小时前
优选算法-多源bfs解决拓扑排序问题
算法·宽度优先
隔壁大炮2 小时前
10.PyTorch_元素类型转换
人工智能·pytorch·深度学习·算法
The Chosen One9852 小时前
算法题目分享(二分算法)
算法·职场和发展·蓝桥杯
爱编码的小八嘎2 小时前
C语言完美演绎8-19
c语言
玛丽莲茼蒿2 小时前
Leetcode hot100 矩阵置零【中等】
算法·leetcode·矩阵
澈2072 小时前
算法进阶:二叉树翻转与环形链表解析
数据结构·算法·排序算法
:1212 小时前
java数组2
java·算法·排序算法