AT_KeioPC2025_o Three Constraints
题目描述
对于非负整数 $x, y, z$,我们将满足以下所有条件的非负整数三元组 $(a, b, c)$ 的个数记为 $f(x, y, z)$:
- $a\ \mathrm{AND}\ b\ \mathrm{AND}\ c = x$
- $a\ \mathrm{OR}\ b\ \mathrm{OR}\ c = y$
- $a + b + c = z$
其中,$a\ \mathrm{AND}\ b$ 表示 $a$ 与 $b$ 的按位与,$a\ \mathrm{OR}\ b$ 表示 $a$ 与 $b$ 的按位或。
给定正整数 $N, M$,以及由 `0`、`1`、`?` 组成的长度为 $N$ 的字符串 $X, Y, Z$。
对于 $X$,将所有 `?` 替换为 `0` 或 `1` 后得到的二进制字符串所代表的所有整数构成集合 $S_X$。同理,$Y$ 对应 $S_Y$,$Z$ 对应 $S_Z$。
请对于 $k = 0, 1, \ldots, M-1$,判断是否存在满足 $x \in S_X, y \in S_Y, z \in S_Z$,并且 $f(x, y, z) \equiv k \pmod{M}$ 的三元组 $(x, y, z)$。
给定 $T$ 个测试用例,请分别解决。
输入格式
输入按以下格式给出。
> $T$
> $\mathrm{case}_1$
> $\mathrm{case}_2$
> $\vdots$
> $\mathrm{case}_T$
每个测试用例格式如下:
> $N\ M$
> $X$
> $Y$
> $Z$
输出格式
请输出 $T$ 行。第 $i$ 行对于第 $i$ 个测试用例,依次输出 $k=0,1,\ldots,M-1$,如果存在满足 $f(x, y, z) \equiv k \pmod{M}$ 的 $(x, y, z)$,则对应位置输出 `1`,否则输出 `0`。
说明/提示
### 样例解释 1
对于第 $1$ 个测试用例,$S_X = \lbrace 1, 3 \rbrace$, $S_Y = \lbrace 1, 5 \rbrace$, $S_Z = \lbrace 3, 7 \rbrace$。对于 $k = 0, 1, 3$:
- $f(3, 1, 3) \equiv 0 \pmod{M}$ :不存在满足条件的 $(a, b, c)$。
- $f(1, 1, 3) \equiv 1 \pmod{M}$ :唯一满足条件的 $(a, b, c)$ 为 $(1, 1, 1)$。
- $f(1, 5, 7) \equiv 3 \pmod{M}$ :满足条件的 $(a, b, c)$ 有 $(1,1,5), (1,5,1), (5,1,1)$ 共 $3$ 个。
因此,对于 $k = 0, 1, 3$,存在符合条件的三元组。在 $k = 2,4$ 时,不存在符合条件的 $(x, y, z)$。
### 数据范围
- $1 \leq T \leq 3000$
- $1 \leq N \leq 3000$
- $1 \leq M \leq 10^6$
- $X, Y, Z$ 均为长度为 $N$ 的仅包含 `0`、`1`、`?` 的字符串
- 所有测试用例中 $N$ 的总和不超过 $3000$
- 所有测试用例中 $M$ 的总和不超过 $10^6$
- $N, M$ 均为整数
由 ChatGPT 5 翻译