DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

Permutation

返回题目

题解

PPP의 사이클 분해를 생각하자. Ai2=PA_i^2=PAi2​=P이면 AiP=PAiA_iP=PA_iAi​P=PAi​이므로, 모든 AiA_iAi​는 PPP와 교환한다. 따라서 AiA_iAi​는 PPP의 사이클을 같은 길이의 사이클로만 보낸다. 그러므로 사이클 길이별로 독립적으로 세고 곱하면 된다.

길이 ddd인 PPP-사이클의 개수를 mmm이라 하자. KKK개의 순열 AiA_iAi​가 유도하는 사이클들 사이의 작용은 의 작용으로 볼 수 있다. 하나의 연결 성분에 포함되는 -사이클의 개수는 항상 꼴이다.

크기 2r2^r2r인 성분 하나를 고정된 2r2^r2r개의 사이클 위에 만드는 경우의 수를 cd,rc_{d,r}cd,r​라 하자. 그러면 다음 식이 성립한다.

ddd가 홀수이면

cd,r=[Kr]2(2r−1)!d2r−1.c_{d,r} = {K \brack r}_2 (2^r-1)! d^{2^r-1}.cd,r​=[rK​

ddd가 짝수이면 r=0r=0r=0은 불가능하고, r≥1r \ge 1r≥1에 대해

cd,r=[K−1r−1]22K−r(2r−1)!d2r−1.c_{d,r} = {K-1 \brack r-1}_2 2^{K-r} (2^r-1)! d^{2^r-1}.cd,r​=[r

여기서

[nr]2=∏i=0r−12n−i−12r−i−1{n \brack r}_2 = \prod_{i=0}^{r-1} \frac{2^{n-i}-1}{2^{r-i}-1}[rn​]2​=

는 이진 Gaussian binomial coefficient이다. 이 문제에서는 r≤log⁡2Nr \le \log_2 Nr≤log2​N이므로 KKK가 매우 커도 빠르게 계산할 수 있다.

이제 F[n]F[n]F[n]을 길이 ddd인 사이클 nnn개를 처리하는 경우의 수라고 하자. 첫 번째 사이클이 속한 성분의 크기가 2r2^r2r이면 나머지 n−1n-1n개 중 개를 고르면 된다. 따라서

F[0]=1,F[0]=1,F[0]=1, F[n]=∑2r≤n(n−12r−1)cd,rF[n−2r].F[n] = \sum_{2^r \le n} \binom{n-1}{2^r-1} c_{d,r} F[n-2^r].F[n]=2r≤n∑​

모든 ddd에 대해 이 DP 값을 곱하면 정답이다. 전체 시간복잡도는 O(Nlog⁡N)O(N\log N)O(NlogN)이다.

F2K\mathbb F_2^K
F2K​
PPP
2r2^r2r
]
2​
(
2r
−
1)!d2r−1.
−
1
K−1
​
]
2​
2K−r
(
2r
−
1)!d2r−1.
i=0∏r−1​
2r−i−12n−i−1​
−
1
2r−12^r-12r−1
(2r−1n−1​)
cd,r​
F
[
n
−
2r].