loj#P2528. 「ZJOI2018」树

    ID: 15795 传统题 3000ms 512MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>数学组合计数ZJOI递推生成函数 / 母函数2018Burnside 引理与 Pólya 定理

「ZJOI2018」树

题目描述

九条可怜是一个热爱出题的女孩子。

虽然出题本身是一件非常有趣的事情,但是要把题目给出成正式比赛,就不是那么有趣了:造数据总是一件让人心力憔悴的事情。

在 ZJOI2018 Day 1 中,可怜出了一道和树相关的非常有趣的题,她打算采用一种常用的方式随机生成一棵 nn 个节点的有根树:

  • 节点 11 作为树的根。
  • 对于 i[2,n]i \in [2, n] ,独立地从 [1,i)[1, i) 中等概率随机选取一个节点作为 ii 的父亲。

可怜不是很想考虑这样随机出来的数据能不能卡掉暴力,毕竟乱搞也是 OI 比赛的一部分。

可怜比较在意的是题目的区分度,以及是不是所有可能的分数都出现了。因此,可怜希望任何两个测试点的树是有区别的:这样就可能会有错误的程序能只通过其中一个点。

因此,可怜想要计算,通过上面的方法独立的随机生成 kknn 个节点的有根树 T1T_1TkT_k,他们两两同构的概率是多少。

两棵 nn 个节点的有根树 T1T_1T2T_2 同构当且仅当存在长度为 nn 的排列 pp,满足 p1=1p_1 = 1,且对于 i[2,n]\forall i \in [2, n],若 iiT1T_1 的父亲是 ff,则 pip_iT2T_2 的父亲是 pfp_f

输入格式

第一行输入三个整数 n,k,pn, k, p,表示节点个数,树的个数以及模数。输入保证 108p10910^8 \leq p \leq 10^9pp 是质数。

输出格式

输出一行一个整数,表示答案对 pp 取模后的值。即如果答案的最简分数表示为 ab\frac{a}{b} ,输出 a×b1modpa \times b^{−1} \mod p

2 2 998244353
3 2 998244353
4 2 998244353
10 2 998244353
50 233 998244353
1
499122177
332748118
113919852
634280054

数据范围与提示

测试点 nn kk 测试点 nn kk
1 5\le 5 =2=2 6 50\le 50 109\le 10^9
2 10\le 10 7 200\le 200
3 20\le 20 8 500\le 500
4 50\le 50 9 1000\le 1000
5 10 2000\le 2000

对于 100% 的数据,保证 pp 是质数且 108p10910^8 \le p \le 10^9