Only Once
题目描述
对于长度为 N 的序列 A=(A1,A2,…,AN),其元素为 1 到 N 之间的整数(包含端点),以及一个整数 i (1≤i≤N),定义长度为 10100 的序列 Bi=(Bi,1,Bi,2,…,Bi,10100) 如下。
Bi,1=i。
B_{i,j+1}=A_{B_{i,j}}\ (1\leq j<10^{100})。
另外,令 Si 为在序列 Bi 中恰好出现一次的不同整数的个数。
更正式地,Si 是满足恰有一个下标 j (1≤j≤10100) 使得 Bi,j=k 的值 k 的个数。
给定整数 N。共有 NN 个可能的序列 A。求在所有这些序列上 i=1∑NSi 的和,对 M 取模后的结果。
输入格式
输入由标准输入提供,格式如下:
N M
输出格式
输出一个整数,表示答案。
4 100000000
624
7 1000000000
5817084
2023 998244353
737481389
100000 353442899
271798911
提示
1≤N≤2×105
108≤M≤109
N 和 M 为整数。例如,考虑 A=(2,3,3,4)。
对于 i=1:我们有 B1=(1,2,3,3,3,…),其中有两个整数 1 和 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。
因此,i=1∑NSi=2+1+0+0=3。
如果对其他 255 个序列同样计算 i=1∑NSi,在所有 256 个序列上的该值之和为 624。
对 M 取模后输出结果。
标签: AtCoder|abc284G
来源
AtCoder|abc284G