最终这个集合会演化为一个“差为 d 的等差数列”,其中 d=gcd(A),最大值是原来集合中的最大值。
因此操作步骤就是:
1、求出原集合的最大公约数g,和现在的最大数max(A)
2、计算理论上这个集合能包含多少数max(A)//g
3、计算现有数和能包含的数之间的差值added
4、根据added的奇偶判断谁获胜
from math import gcd
from functools import reduce
n = int(input())
A = list(map(int, input().split()))
g = reduce(gcd, A)
max_a = max(A)
length = max_a // g
added = length - n
if added % 2 == 1:
print("Alice")
else:
print("Bob")

京公网安备 11010502036488号