hdu4651 4658 整数拆分 五边形数定理

整数拆分可以用dp写,O(n^2)

hdu4651和hdu4658给的范围是10^5,需要用到母函数和五边形数定理。


1)整数拆分的母函数表示:

p(k) 表示把k拆分的方案数。


利用等比数列求和公式,



2)五边形数定理

五边形数定理是一个由欧拉发现的数学定理,描述欧拉函数展开式的特性[1] [2]。欧拉函数的展开式如下:

\prod_{n=1}^\infty (1-x^n)=\sum_{k=-\infty}^\infty(-1)^kx^{k(3k-1)/2}=\sum_{k=0}^\infty(-1)^kx^{k(3k\pm 1)/2}.

亦即

(1-x)(1-x^2)(1-x^3) \cdots = 1 - x - x^2 + x^5 + x^7 - x^{12} - x^{15} + x^{22} + x^{26} + \cdots.
--来自维基百科


3)

用Q(x)表示

有 G(x)*Q(x) = 1

(1 - x - x^2 + x^5 + x^7 - x^{12} - x^{15} + x^{22} + x^{26} + \cdots)(1 + p(1)x + p(2)x^2 + p(3)x^3 + \cdots)=1

比较两边的系数可知:

对于x^2, 系数为 1*p(2)-1*p(1)-1*1 = 0

对于x^4, 系数为 1*p(4)-1*p(3)-1*p(2) = 0

对于x^7, 系数为 1*p(7)-1*p(6)-1*p(5)+1*p(2)+1*1 = 0

由这个规律可递推求出p(x).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值