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 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
倒头就睡的小比特1 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
傲世仙尊1 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿1 天前
重载、重写(覆盖)、重定义区别
c语言
猎头南楼1 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
phltxy1 天前
C 语言指针:从内存地址到灵活的数据访问
c语言
phltxy1 天前
C 语言中的数据存储:从类型到二进制位
c语言
旖旎夜光1 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark1 天前
大规模并行计算中的负载均衡算法研究4
算法