#HK4081. 「ROI 2023 Day1」Ultra Mex

「ROI 2023 Day1」Ultra Mex

题目描述

译自 ROI 2023 Day1 T4. Ультра mex

定义一个集合 AA 上的运算 ultra⁡\operatorname{ultra},AA 必须包含 00 元素。设 m=mex⁡(A)m=\operatorname{mex}(A),可以发现 m>0m>0。我们可以通过如下操作构造一个新的集合 ultra⁡(A)\operatorname{ultra}(A):对 AA 中的每个元素,将它异或上 m−1m-1。例如,$\operatorname{ultra}(\{0,1,2,4,5,9\})=\{0 \oplus 2,1 \oplus 2,2 \oplus 2,4 \oplus 2,5 \oplus 2,9 \oplus 2\}=\{2,3,0,6,7,11\}=\{0,2,3,6,7,11\}$。可以证明,如果集合 AA 包含 00,那么集合 ultra⁡(A)\operatorname{ultra}(A) 也包含 00。

我们选择一个由 00 到 2k−12^{k}-1 的整数组成集合 A0A_{0},它包含 00 元素。我们考虑以下序列:

  • $m_{0}=\operatorname{mex}(A_{0}), A_{1}=\operatorname{ultra}(A_{0})$
  • $m_{1}=\operatorname{mex}(A_{1}), A_{2}=\operatorname{ultra}(A_{1})$
  • …\ldots
  • $m_{i}=\operatorname{mex}(A_{i}), A_{i+1}=\operatorname{ultra}(A_{i})$
  • …\ldots

如果从某个下标 ll 开始,数列 mim_{i} 不再变化,我们称集合 A0A_{0} 是 mex⁡\operatorname{mex}-稳定的。也就是说,对于所有的 i≥li \geq l,都有 mi=mlm_{i}=m_{l}。我们把 mlm_{l} 称为集合 A0A_{0} 的 mex⁡\operatorname{mex}-极限。

给定三个整数 k,n,pk, n, p,计算满足以下条件的集合 A0A_{0} 的个数:

  • 集合 A0A_{0} 由 nn 个不同的整数组成,范围是从 00 到 2k−12^{k}-1(A0A_{0} 必须包含 00 元素);
  • 集合 A0A_{0} 是 mex⁡\operatorname{mex}-稳定的;
  • 集合 A0A_{0} 的 mex⁡\operatorname{mex}-极限等于 pp。

由于答案可能很大,所以请输出答案对一个质数 MM 取模的结果。保证 M−1M-1 能被 2182^{18} 整除。

输入格式

第一行包含一个整数 M (3≤M≤109)M\ (3 \leq M \leq 10^{9}),表示答案的模数。保证 M−1M-1 能被 2182^{18} 整除且 MM 是一个质数。

第二行包含一个整数 t (1≤t≤105)t\ (1 \leq t \leq 10^5),表示测试数据的组数。

对于每组测试数据,包含一行三个整数 $k, n, p\ (1 \leq k \leq 17, 1 \leq n, p \leq 2^{k})$。

输出格式

输出一个整数,表示满足条件的集合 AA 的个数对 MM 取模的结果。

998244353
6
3 2 1
3 2 2
3 2 3
3 2 4
3 5 1
4 6 1
6
1
0
0
29
2461

使用 00 到 77 的整数可以构成 77 个 mex⁡\operatorname{mex}-稳定的大小为 22 的集合:{0,1},{0,2},{0,3}\{0,1\},\{0,2\},\{0,3\}, {0,4},{0,5},{0,6},{0,7}\{0,4\},\{0,5\},\{0,6\},\{0,7\}。

对于 {0,1}\{0,1\},有 $\operatorname{mex}(\{0,1\})=2, \operatorname{ultra}(\{0,1\})=\{0 \oplus 1,1 \oplus 1\}=\{1,0\}=\{0,1\}$,所以 A1=A0A_{1}=A_{0}。因此 mex⁡\operatorname{mex}-极限等于 22。

对于其他所有的集合,m0=mex⁡(A0)=1m_{0}=\operatorname{mex}(A_{0})=1,在计算 ultra⁡\operatorname{ultra} 时,所有元素会会异或上 00,所以 ultra⁡(A0)=A0\operatorname{ultra}(A_{0})=A_{0}。因此,对于它们,mex⁡\operatorname{mex}-极限等于 mex⁡(A0)=1\operatorname{mex}(A_{0})=1。

数据范围与提示

这道题目有 3030 个子任务。

下表给出了每个子任务对 kk 和 tt 的限制。对于每个子任务,必须通过所有 kk 和 tt 的限制不大于它的子任务。

kk t≤10t \leq 10 t≤105t \leq 10^{5}
子任务编号 分值 子任务编号 分值
k≤1k \leq 1 11 33
k≤2k \leq 2 22 55
k≤3k \leq 3 33 77
k≤4k \leq 4 44 88
k≤5k \leq 5 55 33 66 33
k≤6k \leq 6 77 88
k≤7k \leq 7 99 1010
k≤8k \leq 8 1111 22 1212 22
k≤9k \leq 9 1313 1414
k≤10k \leq 10 1515 33 1616 33
k≤11k \leq 11 1717 1818
k≤12k \leq 12 1919 2020
k≤13k \leq 13 2121 2222
k≤14k \leq 14 2323 2424
k≤15k \leq 15 2525 44 2626
k≤16k \leq 16 2727 2828
k≤17k \leq 17 2929 3030