CF2239A Nim Game Is XOR Game

题目描述

Alice 和 Bob 正在玩一个关于数组 $a$ 的游戏,数组 $a$ 由 $n$ 个非负整数组成。Alice 先手。 在每一回合,当前玩家必须选择一个长度为 $n$ 的非负整数数组 $b = [b_1, b_2, \ldots, b_n]$,并满足以下条件: 1. 对于所有 $1 \le i \le n$,都有 $0 \le b_i \le a_i$; 2. $\sum_{i=1}^n b_i > 0$(即 $b$ 数组不全是零); 3. $b_1 \oplus b_2 \oplus \ldots \oplus b_n = 0$,其中 $\oplus$ 表示 [按位异或运算](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)。 选择完数组 $b$ 后,玩家将 $a_i \leftarrow a_i - b_i$,对于所有 $1 \le i \le n$。 无法进行上述操作的玩家输掉游戏。 请你判断,在双方都采取最优策略的前提下,Alice 第一次操作时有多少种合法方案可以选择数组 $b$ 以保证必胜。由于答案可能很大,请输出答案对 $998\,244\,353$ 取模后的结果。

输入格式

每个测试点包含多组测试数据。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试数据组数。 每组数据的第一行为一个整数 $n$($1 \le n \le 10^6$),表示数组 $a$ 的长度。 第二行为 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i < 2^{30}$),表示数组 $a$ 的内容。 保证所有测试点中 $\sum n \le 10^6$。

输出格式

对于每组测试数据,输出 Alice 第一次操作时可以选择保证必赢的 $b$ 的合法方案数,答案需对 $998\,244\,353$ 取模。

说明/提示

在第一个测试点中,Alice 需要选择一个长度为 $1$ 的数组 $b$。条件要求 $b_1 \le a_1$,$b_1 > 0$ 且 $b_1 = 0$。不可能同时满足 $b_1 > 0$ 和 $b_1 = 0$。因此,Alice 无法进行合法操作,立刻输掉了游戏。答案为 $0$。 在第二个测试点中,$a = [1, 2]$。Alice 必须选择 $b = [b_1, b_2]$。条件 $b_1 \oplus b_2 = 0$ 意味着 $b_1 = b_2$。由于 $0 \le b_1 \le 1$ 且 $0 \le b_2 \le 2$,且 $b$ 不能全为零,唯一的合法选择是 $b = [1, 1]$。如果 Alice 选择 $b = [1, 1]$,则数组变为 $a = [1-1, 2-1] = [0, 1]$。轮到 Bob,此时他必须选择 $b'$ 使得 $b'_1 = b'_2$。由于 $a_1 = 0$,他只能取 $b'_1 = 0$,也即 $b'_2 = 0$。但合法操作要求 $\sum b'_i > 0$,所以 Bob 无法进行合法操作,他输掉了游戏。因此 $b = [1, 1]$ 是 Alice 的必胜一步,本组数据答案是 $1$。 由 ChatGPT 5 翻译