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).

你可能感兴趣的:(数学)