题目描述
有一台环形收音机,共有奇素数 p 个档位,依次编号为 0,1,…,p−1。旋钮转过一圈后会回到原位置,初始位于档位 0。
每次旋转时,只能顺时针转动一个非零二次剩余所对应的档位数。也就是说,一次旋转的改变量必须属于集合
R={x2modp∣1≤x<p}。
由于 p 是奇素数,R 中恰有 (p−1)/2 个不同元素,并且 0∈/R。
共有 Q 次询问。第 i 次询问给出两个整数 ki,ni,你需要求:从档位 0 出发,恰好进行 ki 次旋转后到达档位 ni 的旋转方案数。
一个方案由每一步的档位改变量序列唯一确定。若第 j 步选择的改变量为 rj∈R,则需要满足
r1+r2+⋯+rki≡ni(modp)。
设第 i 次询问的方案数为 ansi。你不需要分别输出每个 ansi,而是输出
$\displaystyle \bigoplus_{i=1}^{Q}(ans_i\bmod 998244353)$,
其中 ⊕ 表示按位异或。
输入格式
第一行两个正整数 Q,p。
接下来 Q 行,每行两个非负整数 ki,ni。
输出格式
输出一个整数,表示所有询问答案模 998244353 后的按位异或和。
输入输出样例 #1
输入
3 7
0 0
1 1
2 5
输出
2
说明
当 p=7 时,非零二次剩余为 {1,2,4}。
- k=0,n=0:只有空序列,方案数为 1;
- k=1,n=1:只有 (1),方案数为 1;
- k=2,n=5:有 (1,4)、(4,1) 两种方案,方案数为 2。
因此最终答案为 1⊕1⊕2=2。
输入输出样例 #2
输入
7 11
0 0
1 1
1 2
2 0
2 1
2 2
3 0
输出
14
数据范围与约定
对于全部数据:
- 1≤Q≤105;
- p 为奇素数;
- 0≤ni<p≤109;
- 0≤ki≤1018。
原题各测试点覆盖的典型性质包括:
| 类型 |
典型范围或性质 |
| 小规模 |
p≤200,Q≤100,ki≤200 |
| 中等模数 |
p≤104,Q≤105,ki≤109 |
| 大模数 |
p≤109,Q≤105,ki≤1018 |
| 特殊目标 |
所有 ni=0 |
| 所有 ni 为非零二次剩余 |
| 所有 ni 为非零非二次剩余 |
| 特殊步数 |
ki∈{0,1,2,1018} |
| 极大步数 |
1017≤ki≤1018 |
原数据还同时覆盖 p≡1(mod4) 与 p≡3(mod4) 两种情况。
提示
对于固定的 p 和 k,答案只与 n 属于以下三类中的哪一类有关:
- n=0;
- n 是非零二次剩余;
- n 是非二次剩余。
这三类之间可以建立一个 3×3 的线性递推。