loj6268 分拆数 生成函数+多项式ln+多项式exp

版权声明:虽然是个蒟蒻但是转载还是要说一声的哟 https://blog.csdn.net/jpwang8/article/details/87888095

Description


设f(n)表示正整数n的分拆数,求f(1)~f(n)

Solution


考虑分拆数的生成函数 F ( x ) F(x) ,就是
F ( x ) = i 0 ( 1 1 x i ) F(x)=\prod\limits_{i\ge 0}\left({\frac{1}{1-x^i}}\right)

常规套路就是两边取对数变成加法,于是
ln ( F ( x ) ) = i 1 ln ( 1 x i ) \ln\left(F(x)\right)=-\sum\limits_{i\ge1}\ln(1-x^i)

考虑对右柿泰勒展开,导数值我们取 x 0 = 0 x_0=0 ,那么
ln ( F ( x ) ) = i 1 j 1 x i j j \ln\left(F(x)\right)=\sum\limits_{i\ge1}\sum\limits_{j\ge1}\frac{x^{ij}}{j}
其中用到一个结论是
ln ( x + 1 ) = n 1 ( 1 ) n + 1 x n n \ln(x+1)=\sum\limits_{n\ge1}{(-1)}^{n+1}\frac{x^n}{n}
上柿是函数 f ( x ) = ln ( x + 1 ) f(x)=\ln(x+1) 的麦克劳林级数,我们把x用 x i j -x^{ij} 带就可以了

因为多项式的界次是n的,因此答案右边的柿子可以nlogn求,我们只需要exp回去就可以了

Code


口胡博客没有代码

猜你喜欢

转载自blog.csdn.net/jpwang8/article/details/87888095