整数拆分问题

本文介绍了整数拆分的概念,给出了拆分数的生成函数及其与欧拉函数的关系,并通过五边形数定理阐述了递推公式。讨论了HDU 4658问题,要求在限制条件下计算整数的拆分数,提出利用生成函数和递推的方法解决,复杂度为O(n^2)和O(nlogn)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义

对于一个非负整数 n n n,它的一个拆分定义为若干个正整数 a 1 , a 2 , . . . , a k a_1,a_2,...,a_k a1,a2,...,ak,满足:

  1. a 1 + a 2 + . . . + a k = n a_1+a_2+...+a_k=n a1+a2+...+ak=n
  2. a 1 ≤ a 2 ≤ . . . ≤ a k a_1\le a_2\le ...\le a_k a1a2...ak

其中,第二个条件是为了避免重复计算,如 6 = 1 + 2 + 3 6 = 1 + 2 + 3 6=1+2+3 6 = 3 + 2 + 1 6=3+2+1 6=3+2+1 为同一方案。
p n p_n pn 表示 n n n 不同的拆分方案数。例如, 4 = 3 + 1 = 2 + 2 = 2 + 1 + 1 = 1 + 1 + 1 + 14 = 4 = 3 + 1 = 2 + 2 = 2 + 1 + 1 = 1 + 1 + 1 + 1 4=3+1=2+2=2+1+1=1+1+1+14=4=3+1=2+2=2+1+1=1+1+1+1 4=3+1=2+2=2+1+1=1+1+1+14=4=3+1=2+2=2+1+1=1+1+1+1,于是 p 4 = 5 p_4=5 p4=5
对于 p n p_n pn 的生成函数 P ( x ) P(x) P(x),我们可以通过枚举 1 1 1 的数量,枚举 2 2 2 的数量…,枚举 n n n 的数量得到,即 P ( x ) = ( ∑ i = 0 ∞ x i ) ( ∑ i = 0 ∞ ( x 2 ) i ) . . . ( ∑ i = 0 ∞ ( x n ) i ) = 1 1 − x 1 1 − x 2 . . . 1 1 − x n = ∏ k = 1 ∞ 1 1 − x k P(x)=(\sum\limits_{i=0}^{\infty}x^i)(\sum\limits_{i=0}^{\infty}(x^2)^i)...(\sum\limits_{i=0}^{\infty}(x^n)^i)=\frac{1}{1-x}\frac{1}{1-x^2}...\frac{1}{1-x^n}=\prod\limits_{k=1}^{\infty}\frac{1}{1-x^k} P(x)=(i=0xi)(i=0(x2)i)...(i=0(xn)i)=1x11x21...1xn1=k=11xk1

五边形数定理

定义欧拉函数 ϕ ( x ) = ∏ k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值