AT_pakencamp_2022_day3_f Cycle and Xor

题目描述

给定一个长度为 $N$ 的数列 $A = (A_0, A_1, \ldots, A_{N-1})$,其中每个元素都是 $0$ 以上 $2^M$ 未满的整数,求满足以下条件的数列个数,并对 $998244353$ 取余后输出。 - 对于所有整数 $i\ (0 \leq i \leq N-1)$,都满足 $A_i \oplus A_{(i+1) \bmod N} \neq T_i$ 且 $A_i \oplus A_{(i+1) \bmod N} \neq U_i$。 其中,$\oplus$ 表示按位异或(XOR)运算。 按位异或(XOR)运算是指,对于非负整数 $A$ 和 $B$,他们的按位异或 $A \oplus B$ 定义如下: - 若 $A,B$ 的二进制表示中第 $2^k$ 位($k \geq 0$),只有一方为 $1$,则该位为 $1$,否则为 $0$。 例如,$3 \oplus 5 = 6$(用二进制表示为:$011 \oplus 101 = 110$)。

输入格式

输入以如下格式经标准输入给出。 > $N\ M\ T_0\ U_0\ T_1\ U_1\ \vdots\ T_{N-1}\ U_{N-1}$

输出格式

输出答案。

说明/提示

### 样例解释 1 作为 $A$ 的可能数列有 $(0,2,1)$、$(0,3,0)$、$(1,3,0)$、$(1,2,1)$、$(2,0,3)$、$(2,1,2)$、$(3,1,2)$、$(3,0,3)$,共 $8$ 种。 ### 约束条件 - $2 \leq N \leq 2 \times 10^5$ - $1 \leq M \leq 30$ - $0 \leq T_i < U_i < 2^M$ - 输入均为整数。 由 ChatGPT 5 翻译