Luogu4709 信息传递

题意:给出一个 元置换 。求有多少个置换 满足

答案对 取模,,时限


有意思的题。

看到置换乘积,首先把置换分解成循环表示。

单独看一个循环,有如下定理:

  • 长度为 的循环在 次幂之后得到的置换有 个等大小循环。

    可以看做每个元素转动了 次。沿着某个环走,不断 再模 ,易得恰能走 步。

也就是说, 中的 个长度为 的环能对应到 中的一个环,当且仅当

考虑 个长度为 的小环有多少种拼合的方法。

由于拼合后是大环,先钦定第一个小环的第一个元素排在第一位。

此外,其余 个小环可以随意旋转,方案数为

其余 个小环之间还可以随意排列,方案数为

总的来说就是 。不妨设为


容易发现,不同大小的循环之间互不影响,我们每种大小分开考虑。

现有 个长度为 的环。

为使用了 个环的方案数。则 中间是 而不是 的原因:合成的各个环是无序的,不妨钦定每次必选第一个。

其中, ,所以枚举量是 级别的。

对每种大小分别计算,复杂度