Lucas 卢卡斯定理

卢卡斯定理及其应用
本文介绍卢卡斯定理的基本性质及递归求解组合数的方法,并给出具体实现代码,利用二项式定理及费马小定理进行证明。

Lucas:

卢卡斯定理说白了只有一条性质

$$ C^n_m \equiv C^{n/p}_{m/p} \times C^{n \bmod p}_{m \bmod p} \ (mod \ \ p) $$

用于 m,n 很大时快速求组合数。(p 为质数)

CODE:

1 long long Lucas(long long n,long long m){
2     if(m==0)return 1;
3     if(n<m)return 0;
4     if(n<p&&m<p)return fac[n]*inv[n-m]%p*inv[m]%p;
5     return Lucas(n/p,m/p)*Lucas(n%p,m%p)%p;
6 }

 证明:

前置技能:二项式定理

对于任意质数p,根据费马小定理有:

然后我们把(1+x)^n这个式子处理一下:

然后同时我们还有:

观察一下两个式子x的m次方的系数,可以得到:

然后我们回到最开始的递归形式的那个式子,会发现…… 就证完了OvO

( 引用自 hy 大佬课件)

转载于:https://www.cnblogs.com/ezoiLZH/p/9381441.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值