数的分解

我们常常会对自然数进行分解,求取不同分解的组合数目或者对分解出的序列进行一系列操作。

 

各种分解方法中的k数出现次数:

HDU - 4602

4 = 1 + 1 + 1 + 1          4 = 1 + 1 + 2        4 = 1 + 2 + 1       4 = 2 + 1 + 1 
4 = 1 + 3                      4 = 2 + 2               4 = 3 + 1             4 = 4 

f(n,k)代表对自然数n进行分解的各种分解方法中,数字k出现的次数。

我们可以看出,上述的分解方法是带有顺序的分解,即1、2、1和2、1、1是不同的分解方式。对于带顺序的分解方式,我们可以知道,当最左端或者最右端的数不同时,可代表不同的分解方式,故我们可以假定最右端的值不一样,当最右端值m定下之后,前面的总数n-m也就定了,而n-m是比n小的一个数,用动态规划的思想可直接使用结果。

4=(3)+1     4=(2)+2     4=(1)+3   4=(0)+4   ()中的数代表可分解,故我们可以得到状态转移方程: 

 f(n,k)=f(n-1,k)+f(n-2,k)+f(n-3,k)......+f(k,k)+F    f(k,k)=1  由于右端值可以等于k,故这个k的贡献F等于(n-k)的分解个数为2^(n-k-1)

观察转移方程容易得出:f(k,k)=1    f(k+1,k)=1+2^0=2  ....... 相当于从k开始重新计算 ,故任意n.k都可以映射f(n,k)=f(n-k+1,1)

令g(n)=f(n,1), 有状态转移方程:     //如果观察不出也没事,也可以按照下面方法处理

g(n)=g(n-1)+g(n-2)+...+g(1)+2^(n-2)   回推一步  g(n-1)=g(n-2)+g(n-3)+...+g(1)+2^(n-3)  两式做减法得新的状态转移方程

g(n)=2*g(n-1)+2^(n-3)

运用快速幂得到结果\binom{g(n)}{2^{n-3}}=\begin{bmatrix} 2 &2 \\ 0& 2 \end {bmatrix} ^{n-3}\binom{g(3)}{2^{0}}    g(3)=5,g(2)=2,g(1)=1; 其中g(n)中的n等于f(n,k)中的n-k+1;

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值