Luogu P5396 第二类斯特林数 列 题解
Description
给定 \(n,k\),求
\[\begin{Bmatrix} 0 \\k \end{Bmatrix},\begin{Bmatrix} 1 \\k \end{Bmatrix},\cdots,\begin{Bmatrix} n \\k \end{Bmatrix}
\]
即一列的第二类斯特林数,答案对 \(167772161\) 取模。
限制:\(1\le n,k< 2^{17}\)。
Solution
考虑第二类斯特林数的递推式:
\[\begin{Bmatrix} n \\k \end{Bmatrix}=\begin{Bmatrix} n-1 \\k-1 \end{Bmatrix}+k\begin{Bmatrix} n-1 \\k \end{Bmatrix}
\]
设
\[f_k(z)=\sum_{n\ge 0}\begin{Bmatrix} n \\k \end{Bmatrix}z^n
\]
有
\[\begin{aligned}
f_k(z)&=\sum_{n\ge 0}\begin{Bmatrix} n \\k \end{Bmatrix}z^k\\
&=\sum_{n\ge 0}\begin{Bmatrix} n-1 \\k-1 \end{Bmatrix}z^n+k\sum_{n\ge 0}\begin{Bmatrix} n-1 \\k \end{Bmatrix}z^n\\
&=zf_{k-1}(z)+kzf_k(z)
\end{aligned}
\]
解得 \(f_k(z)=\dfrac{z}{1-kz}f_{k-1}(z)\)。由于 \(f_0(z)=1\),所以
\[f_k(z)=\dfrac{z^k}{(1-z)(1-2z)\cdots(1-kz)}=\dfrac{z^k}{\displaystyle\prod_{j=1}^k(1-zj)}
\]
只需用分治乘法算出分母求逆再平移即可。
时间复杂度:\(\mathcal O(n\log^2n)\)。