US Open 2020 T2 Exercise

首先根据一番推导,不包含 L L 的倍数长度的排列长度由

exp ( k 1 z k L k L ) 1 1 x = ( 1 z L ) 1 / L / ( 1 z ) \exp (-\sum_{k\ge 1} \frac{z^{kL}}{kL}) \frac1{1-x} = (1-z^L)^{1/L}/(1-z)

这一 EGF 表示,因此令 k = n / L k=\lfloor n/L \rfloor ,可得

[ z k L ] ( 1 z L ) 1 / L / ( 1 z ) = [ z k L ] ( 1 z L ) 1 / L / ( 1 z L ) = [ z k L ] ( 1 z L ) 1 / L 1 = ( 1 ) k ( 1 / L 1 k ) = ( 1 1 / L ) ( 2 1 / L ) ( k 1 / L ) k ! \begin{aligned} [z^{kL}](1-z^L)^{1/L}/(1-z) &= [z^{kL}](1-z^L)^{1/L}/(1-z^L)\\ & = [z^{kL}](1-z^L)^{1/L-1}\\ & = (-1)^k\binom{1/L-1}{k}\\ &= \frac{(1-1/L)(2-1/L)\cdots (k-1/L)}{k!} \end{aligned}

然后因为 EGF 最后要乘以 n ! n! ,答案 L L 对应的就是

n ! ( L 1 ) ( 2 L 1 ) ( k L 1 ) k ! L k \frac{n!(L-1)(2L-1)\cdots(kL-1)}{k!L^k}

我们欲计算此式并不能太直接,因为是取模 P 1 P-1 ,它并不是个质数。

我们考虑将 P 1 P-1 n \le n 部分之质因子分解出,记为 P 1 = R p 1 α 1 p 2 α 2 p w α w P-1 = Rp_1^{\alpha_1}p_2^{\alpha_2}\cdots p_w^{\alpha_w} ,考虑计算 n ! k ! L k m o d ( P 1 ) \frac{n!}{k!L^k} \bmod (P-1) ,它必然是整数。

我们考虑递增地计算所有的 L L ,这时 k k 是递减的,那么 n ! k ! \frac{n!}{k!} 我们可以维护其抛去 p 1 , p 2 , , p w p_1,p_2,\dots,p_w 互质之部分的乘积,以及 p 1 , p 2 , p w p_1,p_2,\dots p_w 各部分的质因子次数。我们对于过程中乘进去的每个数都暴力加入,因为这样的总共次数是
i = 1 w k = 1 n p i k < p k n n p k = Θ ( n log log n ) \sum_{i=1}^w \sum_{k=1}^{\infty} \left\lfloor \frac{n}{p_i^k} \right\rfloor < \sum_{p^k \le n} \frac{n}{p^k} = \Theta(n\log \log n)

对于除以 L k L^k 部分,如果 p p p i p_i 不重合那么就直接 Θ ( k ) \Theta(k) 乘就完事了,并且剩下的部分也没有必要 Θ ( w ) \Theta(w) 计算,我们应该直接存一个乘了所有部分的值,否则就是减去对应的质因子数量,然后进行求值。总共进行 Θ ( w ) \Theta(w) 次求值的只有 i log p i n \sum_i \log_{p_i} n 那么多,不是复杂度瓶颈。至于求出 p i t m o d P 1 p_i^t \bmod P-1 的值,注意到 t n / p i k t\le \sum \lfloor n/p_i^k \rfloor ,所以我们直接打表的大小是不超过 n log log n n\log \log n 的。

综上所述,结合快速幂部分的复杂度,整道题可以在 Θ ( n log log n + n log n log P ) \Theta(n\log \log n + \frac{n}{\log n}\log P) 时间内求算。

附录:需要用到的界

Mertens 第二定理告诉我们,
p n 1 p = ln ln n + C + O ( 1 ln n ) \sum_{p\le n} \frac 1 p = \ln \ln n + C + O\left(\frac1{\ln n}\right)

由此我们不难得到所有 p k p^k 的倒数和的界:

p k n 1 p k < p n k 1 1 p k = p n 1 p 1 = ( p n 1 p ) + ( p n 1 p ( p 1 ) ) < ( p n 1 p ) + ζ ( 2 ) = ln ln n + C + O ( 1 ln n ) \begin{aligned} &\quad \sum_{p^k\le n} \frac1{p^k}\\ &< \sum_{p\le n} \sum_{k\ge 1} \frac{1}{p^k}\\ & = \sum_{p\le n} \frac{1}{p - 1} \\ & = \left( \sum_{p\le n} \frac 1 p \right) + \left( \sum_{p\le n} \frac 1 {p(p-1)} \right)\\ & < \left( \sum_{p\le n} \frac 1 p \right) + \zeta(2)\\ & = \ln \ln n + C' + O\left(\frac1{\ln n}\right) \end{aligned}

猜你喜欢

转载自blog.csdn.net/EI_Captain/article/details/105205834