求二项式因子的算法

组合数C(n, k)的求法:

1. 浮点数迭代法

缺点: 当数比较大的时候, 可能结构不够精确.

使用公式

$${n+1/choose k+1} = {n+1/over k+1}{n/choose k}$$

 

或:

 

 

2. 动态规划法

缺点: 对空间有较大的要求.

具体为:

ntex2html_wrap_inline69039tex2html_wrap_inline69041tex2html_wrap_inline69043tex2html_wrap_inline69045tex2html_wrap_inline69047tex2html_wrap_inline69049tex2html_wrap_inline69051tex2html_wrap_inline69053
01       
111      
2121     
31331    
414641   
515101051  
61615201561 
7172135352171

Table: Pascal's Triangle

  

3.快速算法

还有一种快速算法, 在<<C语言名题精选百则>>上有所叙述.

 

下面展示一道题:

pku 3219 Binomial Coefficients

求C(n, k)的最后一位是0,还是1(即结果是奇数还是偶数).

 

这道题采用一步一步的优化的演示方法.

可以注意到k<=n<2^31, k,n如此之大, 肯定不能用上面的方法, 也不必用, 因为他只需要知道结构是奇数还是偶数.

那判断C(n,k) = A(n,k)/A(k,k)的分母分子个含有2这个因子的个数的多少,相减即可.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值