题目描述
1 以上 N 以下の整数からなる長さ N の数列 A = (A1,A2,…,AN) および整数 i (1≤ i ≤ N) に対して、 長さ 10100 の数列 Bi=(Bi,1,Bi,2,…,Bi,10100) を以下のように定義します。
- Bi,1=i
- Bi,j+1=ABi,j (1≤ j < 10100)
また、Si を「数列 Bi のなかでちょうど 1 度だけ出てくる数の種類数」と定義します。 より厳密には、Si は「Bi,j=k を満たす j (1≤ j≤ 10100) がちょうど 1 つであるような k の数」です。
整数 N が与えられます。数列 A として考えられるものは NN 通りありますが、それら全てに対して i=1∑N Si を求め、 その総和を M で割った余りを答えてください。
输入格式
入力は以下の形式で標準入力から与えられる。
N M
输出格式
答えを整数として出力せよ。
题目大意
给定 n,对于一个长度为 n,值域为 n 的序列 A,按如下方法构造无限序列 Bi(1≤i≤n):
- Bi,1=i
- Bi,j=ABi,j−1(j>1)
记 Si 为 Bi 中只出现了一次的元素的个数,定义序列 A 的价值为 ∑i=1nSi,现在请求出所有 nn 个可能的序列 A 的价值之和对 M 取模的结果。
n≤2×105,108≤M≤109.
4 100000000
624
7 1000000000
5817084
2023 998244353
737481389
100000 353442899
271798911
提示
制約
- 1≤ N ≤ 2× 105
- 108≤ M ≤ 109
- N,M は整数
Sample Explanation 1
例として、A=(2,3,3,4) の場合を考えます。 - i=1 のとき : B1=(1,2,3,3,3,…) となるから、1 度だけ出てくる数は 1,2 の 2 つで、S1=2 - i=2 のとき : B2=(2,3,3,3,…) となるから、1 度だけ出てくる数は 2 のみで、S2=1 - i=3 のとき : B3=(3,3,3,…) となるから、1 度だけ出てくる数は存在せず、S3=0 - i=4 のとき : B4=(4,4,4,…) となるから、1 度だけ出てくる数は存在せず、S4=0 よって、 i=1∑N Si=2+1+0+0=3 です。 他の 255 通りの A に対しても同様に i=1∑N Si を計算したうえで、 256 通り全ての総和をとると 624 になります。
Sample Explanation 3
総和を M で割った余りを出力してください。