CF1848F Vika and Wiki
题目描述
最近,Vika 正在研究她最喜欢的互联网资源——Wikipedia。
在 Wikipedia 的广阔天地中,她了解到了一种有趣的数学运算——按位异或(bitwise XOR),记作 $ \oplus $。
Vika 开始研究这种神秘运算的性质。为此,她取了一个由 $ n $ 个非负整数组成的数组 $ a $,并对其所有元素同时进行如下操作:$ a_i = a_i \oplus a_{(i+1) \bmod n} $。这里 $ x \bmod y $ 表示 $ x $ 除以 $ y $ 的余数。数组的下标从 $ 0 $ 开始。
由于仅进行一次上述操作还不足以彻底研究,Vika 会不断重复该操作,直到数组 $ a $ 变为全零。
请你判断,最少需要进行多少次上述操作,才能使数组 $ a $ 的所有元素都变为零。如果永远无法变为全零,则输出 $ -1 $。
输入格式
第一行包含一个整数 $ n $($ 1 \le n \le 2^{20} $),表示数组 $ a $ 的长度。
保证 $ n $ 可以表示为 $ 2^k $,其中 $ k $ 是某个整数($ 0 \le k \le 20 $)。
第二行包含 $ n $ 个整数 $ a_0, a_1, a_2, \dots, a_{n-1} $($ 0 \le a_i \le 10^9 $),表示数组 $ a $ 的元素。
输出格式
输出一个整数,表示使数组 $ a $ 的所有元素都变为零所需的最小操作次数。如果数组 $ a $ 永远无法变为全零,则输出 $ -1 $。
说明/提示
在第一个样例中,经过一次操作后,数组 $ a $ 变为 $ [3, 3, 3, 3] $。再进行一次操作后,数组变为 $ [0, 0, 0, 0] $。
在第二个样例中,数组 $ a $ 一开始就是全零。
在第三个样例中,经过一次操作后,数组 $ a $ 变为 $ [0] $。
由 ChatGPT 4.1 翻译