首页 > 试题广场 >

因数博弈

[编程题]因数博弈
  • 热度指数:107 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}Alice 和 Bob 正在用神奇的数学魔法玩一个取石子游戏。

\hspace{15pt}n 个石子堆在一起,Alice 和 Bob 轮流进行操作,每次操作的流程如下:

{\hspace{20pt}}_\texttt{1.}\,设此时剩下的石子个数为 x,求出集合 S = \{d \in N^*∣\left( d∣x \right)∧\left( 1<d<x \right)\}。若集合 S 为空,则立即 赢得 这场游戏。
{\hspace{20pt}}_\texttt{2.}\,集合 S 中任选一个数 p,并动用神奇的数学魔法将石子的数量变为 p

\hspace{15pt}Alice 想知道,如果自己先手,且自己和 Bob 都采取最优策略,最终谁能获胜?

输入描述:
\hspace{15pt}输入一行一个正整数 n ( 1 \leqq n \leqq 10^{12} ),表示初始时石子的个数。


输出描述:
\hspace{15pt}如果 Alice 在最优策略下能够赢得游戏,请输出 \texttt{Alice};否则输出 \texttt{Bob}
示例1

输入

6

输出

Bob
示例2

输入

30

输出

Alice
示例3

输入

1

输出

Alice
n会取到大于1e12
发表于 2025-12-07 16:09:56 回复(0)