#P15692. [ICPC 2023 Jakarta R] Deck-Building Game

[ICPC 2023 Jakarta R] Deck-Building Game

题目描述

你和你的朋友正在玩一款构筑牌组的游戏。有 NN 张卡牌,编号从 11 到 NN。第 ii 张卡牌的数值为 AiA_i。

你需要为你和你的朋友各自构建一个牌组。一张卡牌不能同时出现在两个牌组中,也可以选择不使用所有 NN 张卡牌。允许某个牌组为空,即不包含任何卡牌。

一个牌组的“力量”定义为该牌组中所有卡牌数值的按位异或(XOR)结果。空牌组的力量为 00。

如果两个牌组的力量相等,则认为这局游戏是平衡的。

请你计算有多少种不同的方法可以构建两个牌组,使得游戏平衡。只要有一个牌组包含至少一张不同的卡牌,就认为两种方法不同。由于答案可能很大,请输出答案对 998 244 353998\,244\,353 取模的结果。

输入格式

第一行包含一个整数 NN(2≤N≤100 0002 \le N \le 100\,000)。

第二行包含 NN 个整数 AiA_i(1≤Ai≤100 0001 \le A_i \le 100\,000)。

输出格式

输出一个整数,表示可以使游戏平衡的构建方法数。答案对 998 244 353998\,244\,353 取模。

4
16 12 4 8
9
4
1 2 4 8
1
2
1 1
5
6
1 1 1 2 2 2
169

提示

样例输入输出 1 说明

设 SS 和 TT 分别为你和你朋友的牌组。共有 99 种方法可以使游戏平衡。

  • S={}S = \{\},T={}T = \{\}。两个牌组的力量均为 00。
  • S={2,3,4}S = \{2, 3, 4\},T={}T = \{\}。两个牌组的力量均为 00。
  • S={}S = \{\},T={2,3,4}T = \{2, 3, 4\}。两个牌组的力量均为 00。
  • S={2,4}S = \{2, 4\},T={3}T = \{3\}。两个牌组的力量均为 44。
  • S={3}S = \{3\},T={2,4}T = \{2, 4\}。两个牌组的力量均为 44。
  • S={2,3}S = \{2, 3\},T={4}T = \{4\}。两个牌组的力量均为 88。
  • S={4}S = \{4\},T={2,3}T = \{2, 3\}。两个牌组的力量均为 88。
  • S={3,4}S = \{3, 4\},T={2}T = \{2\}。两个牌组的力量均为 1212。
  • S={2}S = \{2\},T={3,4}T = \{3, 4\}。两个牌组的力量均为 1212。

样例输入输出 2 说明

唯一能使游戏平衡的方法是两个牌组都为空。

样例输入输出 3 说明

共有 55 种方法可以使游戏平衡。

  • S={}S = \{\},T={}T = \{\}。两个牌组的力量均为 00。
  • S={1,2}S = \{1, 2\},T={}T = \{\}。两个牌组的力量均为 00。
  • S={}S = \{\},T={1,2}T = \{1, 2\}。两个牌组的力量均为 00。
  • S={1}S = \{1\},T={2}T = \{2\}。两个牌组的力量均为 11。
  • S={2}S = \{2\},T={1}T = \{1\}。两个牌组的力量均为 11。

由 ChatGPT 4.1 翻译