[航海协会]数论

Posted StaroForgin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[航海协会]数论相关的知识,希望对你有一定的参考价值。

数论


题解

容易发现发现我们的 F F F是一个积性函数,显然,组成它的 ϕ \\phi ϕ都是积性的,它们于是卷起来的, F F F肯定是积性的。
所以我们的 G ( N ) = ∑ ∑ k i = N ∏ F ( p i k i ) G(N)=\\sum_\\sum k_i=N\\prod F(p_i^k_i) G(N)=ki=NF(piki),但这样好像不是特别好看的样子,我们可以考虑转化成生成函数的形式。
我们定义 F i = ∑ j = 0 ∞ F ( p i j ) x j F_i=\\sum_j=0^\\infty F(p_i^j)x^j Fi=j=0F(pij)xj,容易发现,
F i = ( ∑ j = 0 ∞ ϕ ( p i j ) x j ) m = ( 1 + ∑ j = 1 ∞ ( p i j − p i j − 1 ) x j ) m = ( 1 − x 1 − p i x ) m G ( N ) = [ x N ] ∏ i = 1 t F i = [ x N ] ∏ i = 1 t ( 1 − x 1 − p i x ) m F_i=(\\sum_j=0^\\infty\\phi(p_i^j)x^j)^m=(1+\\sum_j=1^\\infty(p_i^j-p_i^j-1)x^j)^m=(\\frac1-x1-p_ix)^m\\\\ G(N)=[x^N]\\prod_i=1^tF_i=[x^N]\\prod_i=1^t\\left(\\frac1-x1-p_ix\\right)^m\\\\ Fi=(j=0ϕ(pij)xj)m=(1+j=1(pijpij1)xj)m=(1pix1x)mG(N)=[xN]i=1tFi=[xN]i=1t(1pix1x)m现在我们的目的是计算这个分式的第 N N N项,显然 N N N这么大,不太可能暴力乘出来。
一种较为常见的计算分式远项的方法是线性递推,我们把上面的式子化一化,
也就是将原来的分式简单变化一下 F = g ( x ) f ( x ) = f ( − x ) g ( x ) f ( − x ) f ( x ) = g ′ ( x ) f ′ ( x 2 ) F=\\fracg(x)f(x)=\\fracf(-x)g(x)f(-x)f(x)=\\fracg'(x)f'(x^2) F=f(x)g(x)=f(x)f(x)f(x)g(x)=f(x2)g(x),这样的话,下面就只剩下偶数次项了。
如果我们要求的是第 N N N项的 N N N为偶数,那么上面的 g ′ ( x ) g'(x) g(x)就只有偶数项有用,递归到,同样 N N N为奇数,上面也只有奇数项有用。
可以尝试递归求解,
[ x N ] g ( x ) f ( x ) = [ x N 2 ] f e v e n ′ ( x ) g ′ ( x ) ( 2 ∣ N ) [ x N − 1 2 ] f o d d ′ ( x ) g ′ ( x ) ( 2 ∤ N ) [x^N]\\fracg(x)f(x)=\\left\\\\beginarraycc[x^\\fracN2]\\fracf'_even(x)g'(x) & (2\\mid N)\\\\ [x^\\fracN-12]\\fracf'_odd(x)g'(x) & (2\\nmid N)\\endarray\\\\\\right. [xN]f(x)g(x)=[x2N]g(x)feven(x)[x2N1]g(x)fodd(x)(2N)(2N)每次递归相当于都要做一次多项式乘法,将 f f f g g g变成 f ′ f' f g ′ g' g,同时将 N N N除以二。
直到我们的[航海协会]基因切割

[航海协会]万灵药

[航海协会]SSSP

[航海协会]稀疏阶乘问题

[航海协会]身体

[航海协会]身体