loj#P4081. 「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 中的每个元素,将它异或上 m1m-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

我们选择一个由 002k12^{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}-稳定的。也就是说,对于所有的 ili \geq l,都有 mi=mlm_{i}=m_{l}。我们把 mlm_{l} 称为集合 A0A_{0}mex\operatorname{mex}-极限。

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

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

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

输入格式

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

第二行包含一个整数 t (1t105)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

使用 0077 的整数可以构成 77mex\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 个子任务。

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

kk t10t \leq 10 t105t \leq 10^{5}
子任务编号 分值 子任务编号 分值
k1k \leq 1 11 33
k2k \leq 2 22 55
k3k \leq 3 33 77
k4k \leq 4 44 88
k5k \leq 5 55 33 66 33
k6k \leq 6 77 88
k7k \leq 7 99 1010
k8k \leq 8 1111 22 1212 22
k9k \leq 9 1313 1414
k10k \leq 10 1515 33 1616 33
k11k \leq 11 1717 1818
k12k \leq 12 1919 2020
k13k \leq 13 2121 2222
k14k \leq 14 2323 2424
k15k \leq 15 2525 44 2626
k16k \leq 16 2727 2828
k17k \leq 17 2929 3030