只出现一次
题目描述
对于长度为 N、由 1 到 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 中恰好出现一次的不同整数的个数。更形式化地说,Si 是满足「恰好存在一个下标 j (1≤j≤10100) 使得 Bi,j=k」的 k 的个数。
给定一个整数 N。可以成为 A 的序列共有 NN 种。求所有序列的 i=1∑NSi 之和,对 M 取模。
输入格式
输入按以下格式从标准输入给出:
N M
输出格式
以整数形式输出答案。
样例
4 100000000
624
例如,考虑 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。
7 1000000000
5817084
2023 998244353
737481389
输出对 M 取模后的结果。
100000 353442899
271798911
数据范围
- 1≤N≤2×105
- 108≤M≤109
- N 和 M 是整数。