本文共 1173 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要确定在给定条件下先手是否会赢。这个问题可以通过计算SG值来解决。SG函数用于尼姆博弈,帮助确定局面是否为必胜态或必败态。以下是详细的解决步骤:
import sysimport mathdef compute_SG(n): if n == 1: return 0 factors = [] while n % 2 == 0: factors.append(2) n = n // 2 i = 3 max_factor = math.sqrt(n) while i <= max_factor: while n % i == 0: factors.append(i) n = n // i max_factor = math.sqrt(n) i += 2 if n > 2: factors.append(n) return sum(math.log2(x) for x in factors)def main(): t = int(sys.stdin.readline()) for _ in range(t): n = int(sys.stdin.readline()) total = 0 for _ in range(n): num = int(sys.stdin.readline()) sg = compute_SG(num) total ^= sg print("W" if total != 0 else "L")if __name__ == "__main__": main() 通过上述方法,我们可以高效确定先手的胜负。
转载地址:http://jpqq.baihongyu.com/