AT_arc222_e [ARC222E] XOR Matching

题目描述

有 $N$ 张卡片。第 $i$ 张卡片($1 \leq i \leq N$)上写有整数 $A_i$,并且 $0 \leq A_i \leq 2^M - 1$。 对于每一个整数 $X = 0,1,\ldots,2^M-1$,令 $f(X)$ 表示下面问题的答案: > 考虑从卡片中组成若干对。 > > 每一对都包含两张不同的卡片,并且这两张卡片上的整数的按位异或结果必须等于 $X$。同一张卡片不能被多次配对。 > > 在这些条件下,可以组成的对数最多是多少? 输出如下的值: $$ \left(\sum_{X=0}^{2^M-1} f(X) \times 10 ^ X\right) \bmod 998244353 $$ 什么是按位 $\mathrm{XOR}$ 操作? 两个非负整数 $A, B$ 的按位 $\mathrm{XOR}$,记作 $A \oplus B$,其定义如下: - 若 $A$ 与 $B$ 的二进制表示中第 $2^k$ 位($k \geq 0$)中恰有一个数字为 $1$,则 $A \oplus B$ 的第 $2^k$ 位为 $1$;否则为 $0$。 例如,$3 \oplus 5 = 6$(二进制:$011 \oplus 101 = 110$)。 一般地,$k$ 个非负整数 $p_1, p_2, \ldots, p_k$ 的按位 $\mathrm{XOR}$ 定义为 $((\dots ((p_1 \oplus p_2) \oplus p_3) \oplus \dots )\oplus p_k)$,可以证明,这与 $p_1, p_2, \ldots, p_k$ 的顺序无关。

输入格式

输入按照以下格式从标准输入给出: > $N$ $M$ $A_1$ $A_2$ $\ldots$ $A_N$

输出格式

输出如下的值: $$ \left(\sum_{X=0}^{2^M-1} f(X) \times 10 ^ X\right) \bmod 998244353 $$

说明/提示

### 样例解释 1 - 对于 $X=0$:可以组成两对 $(A_1,A_2)$ 和 $(A_3,A_4)$。 - 对于 $X=1$:没有可行的配对,能组成 $0$ 对。 - 对于 $X=2$:可以组成两对 $(A_1,A_4)$ 和 $(A_2,A_3)$。 - 对于 $X=3$:没有可行的配对,能组成 $0$ 对。 因此,$f(0)=2$,$f(1)=0$,$f(2)=2$,$f(3)=0$。需要输出的值为 $2\times 1 + 0\times 10 + 2\times 100 + 0\times 1000 = 202$。 ### 数据范围 - $2\leq N\leq 2\times 10^5$ - $1\leq M\leq 20$ - $0\leq A_i \leq 2^M-1$($1\leq i\leq N$) - 所有输入值均为整数。 由 ChatGPT 5 翻译