LibreOJ #6268. 分拆数 生成函数+多项式exp

博客主要介绍了如何利用生成函数和多项式指数运算求解1到n的分拆数问题。通过泰勒展开和牛顿迭代法,实现从O(nlogn)预处理到指数运算的转换,详细阐述了计算过程和代码实现。
摘要由CSDN通过智能技术生成

题意

求1到n的分拆数。
n = 1 0 5 n=10^5 n=105

分析

设分拆数的生成函数为 F ( x ) = ∑ i = 1 n f ( i ) x i F(x)=\sum_{i=1}^nf(i)x^i F(x)=i=1nf(i)xi
显然有
F ( x ) = ∏ k = 1 n 1 1 − x k F(x)=\prod_{k=1}^n\frac{1}{1-x^k} F(x)=k=1n1xk1
两边取对数得
ln ⁡ F ( x ) = ∑ i = 1 n ln ⁡ 1 1 − x k \ln F(x)=\sum_{i=1}^n\ln \frac{1}{1-x^k} lnF(x)=i=1nln1xk1
将右边的式子泰勒展开一下可得
ln ⁡ F ( x ) = ∑ k = 1 n ∑ i ≥ 1 x k i i \ln F(x)=\sum_{k=1}^n\sum_{i\ge1}\frac{x^{ki}}{i} lnF(x)=k=1ni

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值