Description
设f(n)表示正整数n的分拆数,求f(1)~f(n)
Solution
考虑分拆数的生成函数F(x)F(x)F(x),就是
F(x)=∏i≥0(11−xi)F(x)=\prod\limits_{i\ge 0}\left({\frac{1}{1-x^i}}\right)F(x)=i≥0∏(1−xi1)
常规套路就是两边取对数变成加法,于是
ln(F(x))=−∑i≥1ln(1−xi)\ln\left(F(x)\right)=-\sum\limits_{i\ge1}\ln(1-x^i)ln(F(x))=−i≥1∑ln(1−xi)
考虑对右柿泰勒展开,导数值我们取x0=0x_0=0x0=0,那么
ln(F(x))=∑i≥1∑j≥1xijj\ln\left(F(x)\right)=\sum\limits_{i\ge1}\sum\limits_{j\ge1}\frac{x^{ij}}{j}ln(F(x))=i≥1∑j≥1∑jxij
其中用到一个结论是
ln(x+1)=∑n≥1(−1)n+1xnn\ln(x+1)=\sum\limits_{n\ge1}{(-1)}^{n+1}\frac{x^n}{n}ln(x+1)=n≥1∑(−1)n+1nxn
上柿是函数f(x)=ln(x+1)f(x)=\ln(x+1)f(x)=ln(x+1)的麦克劳林级数,我们把x用−xij-x^{ij}−xij带就可以了
因为多项式的界次是n的,因此答案右边的柿子可以nlogn求,我们只需要exp回去就可以了
Code
口胡博客没有代码