最终这个集合会演化为一个“差为 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")