atcoder#ABC284G. [ABC284G] Only Once

[ABC284G] Only Once

题目描述

1 1 以上 N N 以下の整数からなる長さ N N の数列 A = (A1,A2,,AN) A\ =\ (A_1,A_2,\dots,A_N) および整数 i (1 i  N) i\ (1\leq\ i\ \leq\ N) に対して、 長さ 10100 10^{100} の数列 Bi=(Bi,1,Bi,2,,Bi,10100) B_i=(B_{i,1},B_{i,2},\dots,B_{i,10^{100}}) を以下のように定義します。

  • Bi,1=i B_{i,1}=i
  • Bi,j+1=ABi,j (1 j < 10100) B_{i,j+1}=A_{B_{i,j}}\ (1\leq\ j\ <\ 10^{100})

また、Si S_i を「数列 Bi B_i のなかでちょうど 1 1 度だけ出てくる数の種類数」と定義します。 より厳密には、Si S_i は「Bi,j=k B_{i,j}=k を満たす j (1 j 10100) j\ (1\leq\ j\leq\ 10^{100}) がちょうど 1 1 つであるような k k の数」です。

整数 N N が与えられます。数列 A A として考えられるものは NN N^N 通りありますが、それら全てに対して  i=1N Si \displaystyle\ \sum_{i=1}^{N}\ S_i を求め、 その総和を M M で割った余りを答えてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M

输出格式

答えを整数として出力せよ。

题目大意

给定 nn,对于一个长度为 nn,值域为 nn 的序列 AA,按如下方法构造无限序列 Bi(1in)B_i(1 \le i \le n)

  • Bi,1=iB_{i,1} = i
  • Bi,j=ABi,j1(j>1)B_{i,j} = A_{B_{i,j-1}}(j > 1)

SiS_iBiB_i 中只出现了一次的元素的个数,定义序列 AA 的价值为 i=1nSi\sum_{i=1}^n S_i,现在请求出所有 nnn^n 个可能的序列 AA 的价值之和对 MM 取模的结果。

n2×105,108M109n \le 2 \times 10^5, 10^8 \le M \le 10^9.

4 100000000
624
7 1000000000
5817084
2023 998244353
737481389
100000 353442899
271798911

提示

制約

  • 1 N  2× 105 1\leq\ N\ \leq\ 2\times\ 10^5
  • 108 M  109 10^8\leq\ M\ \leq\ 10^9
  • N,M N,M は整数

Sample Explanation 1

例として、A=(2,3,3,4) A=(2,3,3,4) の場合を考えます。 - i=1 i=1 のとき : B1=(1,2,3,3,3,) B_1=(1,2,3,3,3,\dots) となるから、1 1 度だけ出てくる数は 1,2 1,2 2 2 つで、S1=2 S_1=2 - i=2 i=2 のとき : B2=(2,3,3,3,) B_2=(2,3,3,3,\dots) となるから、1 1 度だけ出てくる数は 2 2 のみで、S2=1 S_2=1 - i=3 i=3 のとき : B3=(3,3,3,) B_3=(3,3,3,\dots) となるから、1 1 度だけ出てくる数は存在せず、S3=0 S_3=0 - i=4 i=4 のとき : B4=(4,4,4,) B_4=(4,4,4,\dots) となるから、1 1 度だけ出てくる数は存在せず、S4=0 S_4=0 よって、 i=1N Si=2+1+0+0=3 \displaystyle\ \sum_{i=1}^{N}\ S_i=2+1+0+0=3 です。 他の 255 255 通りの A A に対しても同様に  i=1N Si \displaystyle\ \sum_{i=1}^{N}\ S_i を計算したうえで、 256 256 通り全ての総和をとると 624 624 になります。

Sample Explanation 3

総和を M M で割った余りを出力してください。