题解 | 绝对值博弈
绝对值博弈
https://www.nowcoder.com/practice/218d3386fde4430b8ddfd28dc3a411e7
最终这个集合会演化为一个“差为 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")



三奇智元机器人科技有限公司公司福利 81人发布