五边形数定理

版权声明:本文为博主原创文章,未经博主允许必须转载。 https://blog.csdn.net/qq_35950004/article/details/86105927

大佬太强了
五边形数定理的实质就是
欧拉函数 Φ \Phi (C++应该对希腊字母也有大小写区分吧)
Φ ( x ) = i = 1 ( 1 x i ) \Phi(x) = \prod_{i=1}^{ \infty } (1-x^i)
然后通过这个函数的意义:包含偶数个不相等的整数的k的整数拆分-包含奇数个不相等的k的整数拆分。
然后用数形结合发现只有和形如(广义)五边形数( n ( 3 n 1 ) 2 , n   Z \frac {n(3n-1)}2,n \in \ \Z )的k会有值。
然后因为 n n 以内广义五边形数是 O ( n ) O(\sqrt n) 的数量级的。
所以可以在 O ( n ) O(\sqrt n) 的复杂度内算出 Φ ( m o d x ) n \Phi \pmod x^n
对于可相同整数拆分 P ( n ) P(n) ,生成函数是
F ( x ) = i = 1 P ( i ) x i = i = 1 ( 1 + x i + x 2 i + . . . ) = i = 1 n 1 1 x i F(x) = \sum_{i=1}P(i)x^i = \prod_{i=1}^{\infty}(1+x^i+x^{2i}+...)=\prod_{i=1}^n\frac 1{1-x^i}
所以
F ( x ) Φ ( x ) = 1 F(x)\Phi (x) = 1
发现 Φ ( x ) \Phi(x) 只有 O ( n ) O(\sqrt n) 项,可以 O ( n n ) O(n\sqrt n) 递推解 F ( x ) [ x n ] F(x)[x^n]
当然你也可以多项式求逆(我怎么不觉得这个多项式求逆会快一些呢?如果你递推时循环展开应该可以D爆多项式求逆吧)。
可以多组数据。
所以五边形数其实就是人们想求 1 F ( x ) \frac 1{F(x)} 时发现这玩意就是五边形数。

猜你喜欢

转载自blog.csdn.net/qq_35950004/article/details/86105927