1. 程式人生 > >五邊形數定理

五邊形數定理

大佬太強了
五邊形數定理的實質就是
尤拉函式 Φ \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)} 時發現這玩意就是五邊形數。