[USACO20OPEN]Exercise P
题意
给定\(n\)及素数\(p\)
求所有\(n\)阶排列的阶的积,在模\(p\)意义下的值
\(n\le 7500\)
做法一
这里是求积,所以可以单独求每个质因数的幂次
对于素数\(p\),其幂次为:\(\sum\limits_{k\ge 1}\#\{f为n阶排列:p^k|ind(f)\}\)
引理1:\(\sum\limits_{p\in prime}\sum\limits_{k\ge 1}[p^k\le n]=\Theta(\frac{n}{logn})\)
证明:
对于\(p>\sqrt{n}\),\(k=1\),个数为\(\Theta(\frac{n}{logn})\)
对于\(p\le \sqrt{n}\),个数为\(\sum\limits_{p\le \sqrt{n}}log_pn\le \sum\limits_{p\le \sqrt{n}}log_2n\le \frac{\sqrt{n}}{logn}logn=\Theta(\sqrt{n})\)
那么单独看\(L=p^k\),考虑算所有环均不整除\(L\)
排列的\(\text{egf}\)是\(\text{exp}^{\text{ln}\frac{1}{1-x}}\)
整除\(L\)的环的\(\text{egf}\)是\(\sum\limits_{k=1}^{\infty}\frac{x^{kL}}{kL}=\frac{1}{L}\sum\limits_{k=1}^{\infty}\frac{x^{kL}}{k}=\frac{1}{L}\text{ln}\frac{1}{1-x^L}\)
那么所有环不整除\(L\)的\(\text{egf}\)是\(\frac{1}{1-x}/\frac{1}{(1-x^L)^{\frac{1}{L}}}=\frac{(1-x^L)^{\frac{1}{L}}}{1-x}\)
分子仅在\(L\)的倍数处有值,分母的组合意义为前缀和,令\(t=\left\lfloor\frac{n}{L}\right\rfloor\),则有:
由于我们在求\(p\)的幂次,这里得对\(p-1\)取模,将\(n![x^{tL}](1-x^L)^{\frac{1}{L}}\)稍作整理,得到:
引理2:\(\sum\limits_{p\in prime}\sum\limits_{k\ge 1}[p^k\le n]=O(nloglogn)\)
故\((tL-1)\cdot (L-1)\)这部分可以暴力,而\(\frac{n!}{t!L^t}=\frac{n!}{L\cdots(tL)}\)可以\(O(n)\)计算
总复杂度\(O(\frac{n^2}{logn})\)
做法二
枚举质数\(p\),枚举排列,令其置换环集合为\(S\),其幂次为:\(\sum\limits_{f为n阶排列}\max\limits_{x\in S}\{|x|里p的次数\}\)
考虑\(\text{min-max}\)反演:\(\sum\limits_{f为n阶排列}\sum\limits_{U\subseteq S}(-1)^{|U|+1}\min\limits_{x\in U}\{|x|里p的次数\}\)
改写成:\(\sum\limits_{f为n阶排列}\sum\limits_{U\subseteq S}(-1)^{|U|+1}\sum\limits_{k=1}^{\infty}[\min\limits_{x\in U}\{|x|里p的次数\}\ge k]\)
那么枚举\(p,k\),对\(\sum\limits_{x\in U} |x|\)动态规划
\(\sum\limits_{p,k}(\frac{n}{p^k})^2[p^k\le n]= n^2\sum\limits_{p,k}\frac{1}{p^{2k}}[p^k\le n]\le n^2\sum\limits_{i=1}^n \frac{1}{i^2}=\Theta(n^2)\)
故复杂度是\(O(n^2)\)的
做法三
当然也可以不需要直接使用反演
枚举\(p,k\),考虑统计不存在任何一个环\(p\)的次数大于等于\(k\)
令\(f_i\)为\(i\)阶排列,不存在环次数大于等于\(k\)
令\(g_i\)为\(i\)阶排列,所有环均次数大于等于\(k\)
对\(f_n\)造成贡献的\(f_i,g_i\)是\(O(\frac{n}{p^k})\)的,故时间复杂度同做法二