题目描述
给定一个由 1 到 N 之间的整数构成、长度为 N 的数列 A=(A1,A2,…,AN),以及整数 i (1≤i≤N),定义长度为 10100 的数列 Bi=(Bi,1,Bi,2,…,Bi,10100),其定义如下:
- Bi,1=i
- $B\_{i,j+1} = A\_{B\_{i,j}} \quad (1 \leq j < 10^{100})$
此外,定义 Si 为“数列 Bi 中恰好只出现一次的数的种类数”。更严格地说,Si 是满足“存在唯一的 j (1≤j≤10100) 使得 Bi,j=k”的 k 的个数。
给定整数 N。数列 A 的所有可能情况共有 NN 种。对于所有这些 A,计算 i=1∑NSi,并将其总和对 M 取余,输出结果。
输入格式
输入通过标准输入给出,格式如下:
N M
输出格式
请输出答案的整数值。
样例 1
输入
4 100000000
输出
624
样例 2
输入
7 1000000000
输出
5817084
样例 3
输入
2023 998244353
输出
737481389
样例 4
输入
100000 353442899
输出
271798911
说明/提示
限制条件
- 1≤N≤2×105
- 108≤M≤109
- N,M 均为整数
样例解释 1
以 A=(2,3,3,4) 为例:
- 当 i=1 时:B1=(1,2,3,3,3,…),只出现一次的数有 1,2 共 2 个,因此 S1=2。
- 当 i=2 时:B2=(2,3,3,3,…),只出现一次的数为 2,因此 S2=1。
- 当 i=3 时:B3=(3,3,3,…),没有只出现一次的数,因此 S3=0。
- 当 i=4 时:B4=(4,4,4,…),没有只出现一次的数,因此 S4=0。
所以,$\displaystyle\sum\_{i=1}^{N} S\_i = 2 + 1 + 0 + 0 = 3$。
对其他 255 种 A 也同样计算 i=1∑NSi,所有 256 种情况的总和为 624。
样例解释 3
请输出总和对 M 取余的结果。
由 ChatGPT 4.1 翻译