1. 程式人生 > >2018.12.31【NOIP訓練】三七二十一(生成函式)

2018.12.31【NOIP訓練】三七二十一(生成函式)

傳送門


解析:

n n 位數的答案為 a n a_n ,則顯然 {

a n } \{a_n\} 的生成函式為:
A ( x )
= ( 1 + x 2 2 !
+ x 4 4 ! + . . . ) 2 × ( 1 + x 1 + x 2 2 ! + . . . ) 3 A(x)=(1+\frac{x^2}{2!}+\frac{x^4}{4!}+...)^2\times (1+\frac{x}{1}+\frac{x^2}{2!}+...)^3

對於這種同類排列需要去重,就需要指數型生成函式。當然現在拿到這樣一個式子,如果你是真正的猛士,可以嘗試暴力化簡(也做得出來)。

一個稍微優美一點的方法是藉助 e x e^x 的Taylor展開:
e x = i = 0 x n n ! = 1 + x + x 2 2 ! + x 3 3 ! + . . . e^x=\sum_{i=0}^\infty\frac{x^n}{n!}=1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+...

那麼我們有: e x = 1 x + x 2 2 ! x 3 3 ! + . . . e^{-x}=1-x+\frac{x^2}{2!}-\frac{x^3}{3!}+...

所以原式的第一部分化簡為: 1 + x 2 2 ! + x 4 4 ! + . . . = ( e x + e x ) / 2 1+\frac{x^2}{2!}+\frac{x^4}{4!}+...=(e^x+e^{-x})/2

所以 A ( x ) = 1 4 ( e x + e x ) 2 × e 3 x = 1 4 ( e 5 x + 2 e 3 x + e x ) = 1 4 i = 0 ( 5 i + 2 × 3 i + 1 ) × x i i ! \begin{aligned} A(x)&=\frac{1}{4}(e^x+e^{-x})^2\times e^{3x}\\ &=\frac{1}{4}(e^{5x}+2e^{3x}+e^x)\\ &=\frac{1}{4}\sum_{i=0}^\infty (5^i+2\times 3^i+1)\times \frac{x^i}{i!} \end{aligned}

所以 a i = 1 4 ( 5 i + 2 × 3 i + 1 ) a_i=\frac{1}{4}(5^i+2\times 3^i+1)

這種難度全在推理的題就不放程式碼了,就一個快速冪。