S42303.23-3 隔空博弈

传统题 时间 1000 ms 内存 256 MiB 3 尝试 0 已通过 0

23-3 隔空博弈

隔空博弈

公约数丈量完了,但Echo-0还留下了一个博弈——不是面对面,是隔空。

"隔空?"CC问。

"对。"你说,"两个人,轮流操作。每次可以把一个数变成它的一个真约数。"

"真约数?"

"对。"你说,"不等于自己的约数。"

"谁赢?"

"没法操作的人输。"你说,"类似于Nim的变种。"

"咋分析?"

"SG函数。"你说,"每个数的SG值等于它所有后继状态SG值的mex。"

"mex?"

"对。"你说,"最小非负整数,不在集合中。"

"第47个数。"你说,"47是质数,真约数只有1。"

"SG值?"

"1。"你说,"因为后继状态是1,SG(1)=0,mex{0}=1。"

"先手赢?"

"对。"你说,"SG不为0,先手必胜。"

"如果nn是1?"

"SG=0,先手必败。"你说,"没有真约数,没法操作。"

"简单。"

"对。"你说,"但多个数组合起来就复杂了。"

"多个?"

"对。"你说,"总SG值是各数SG值的异或。异或为0则先手必败。"

CC看着那个数——47——像一颗棋子,像一个选择,像某种可以走的步。

"走哪步?"她问。

"走到SG值为0的状态。"你说,"让对手面对必败态。"

"咋知道哪步?"

"算。"你说,"每个后继状态的SG值,选那个让异或为0的。"

Echo把博弈树投射出来——像一棵倒长的树,像一张网,像某种所有可能性的集合。

"以前我只走一条线。"她说,"现在……看见整棵树了。"

"因为我们帮你展开。"你说。

"对。"她说,"因为你们帮我展开。"


题目描述

nn堆石子,第ii堆有aia_i个。两人轮流,每次选一堆,把它变成一个真约数。无法操作者输。判断先手是否必胜。

输入格式

第一行nn。第二行nn个整数aia_i

输出格式

先手必胜输出"Yes",否则输出"No"。


输入样例

5

输出样例

0

提示

  • 每个数的SG值:$SG(x)=\text{mex}\{SG(d)\mid d\text{是}x\text{的真约数}\}$。
  • 总SG值为各数SG值的异或。
  • 预处理11MaxMax的SG值。

在线编程 IDE

建议全屏模式获得最佳体验