AT_arc084_d [ARC084F] XorShift

题目描述

[problemUrl]: https://atcoder.jp/contests/arc084/tasks/arc084_d 黑板上写有 $N$ 个非负整数。第 $i$ 个非负整数为 $A_i$。 高桥君可以按照任意顺序执行以下两种操作任意次数: 1. 选择黑板上写的一个整数,将该整数的 $2$ 倍的新整数添加到黑板上。被选中的整数仍保留在黑板上。 2. 选择黑板上写的不一定相异的两个整数,将这两个整数的按位异或(bitwise xor)得到的新整数添加到黑板上。被选中的整数仍保留在黑板上。 在黑板上可能出现的整数中,有多少种不超过 $X$ 的整数?注意,最初写在黑板上的整数也视为可能出现的整数。由于答案可能非常大,请输出其对 $998244353$ 取模的结果。

输入格式

输入通过标准输入给出,格式如下: > $N$ $X$ > $A_1$ > $\vdots$ > $A_N$

输出格式

输出黑板上可能出现的整数中不超过 $X$ 的整数的个数,对 $998244353$ 取模的结果。

说明/提示

### 约束条件 - $1 \leq N \leq 6$ - $1 \leq X < 2^{4000}$ - $1 \leq A_i < 2^{4000}$($1 \leq i \leq N$) - 输入均为整数 - $X$ 和 $A_i$($1 \leq i \leq N$)以二进制形式给出,且最高位为 $1$ ### 样例解释 #1 初始时,黑板上有 $15$、$23$ 和 $18$。在不超过 $7$ 的整数中,可以写出 $0$、$3$、$5$ 和 $6$ 这 $4$ 个数。例如,可以通过以下操作写出 $6$: - 将 $15$ 乘以 $2$,得到 $30$ 并写在黑板上 - 对 $30$ 和 $18$ 取异或,得到 $12$ 并写在黑板上 - 将 $12$ 乘以 $2$,得到 $24$ 并写在黑板上 - 对 $30$ 和 $24$ 取异或,得到 $6$ 并写在黑板上 ### 样例解释 #4 请输出对 $998244353$ 取模的结果。 翻译由 DeepSeek V3 完成