卢卡斯定理&扩展卢卡斯定理

本文详细介绍了卢卡斯定理及其扩展方法,用于解决组合数Cnm mod p的计算问题。通过将m和n表示为p进制形式,并应用中国剩余定理(CRT)进行合并,提供了一种高效求解方案。

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

卢卡斯定理

Cnm mod p
m=a0p0+a1p1++akpk,n=b0p0+b1p1++bkpk
CnmCbiai(mod p)

扩展卢卡斯定理

好像这也不是什么定理,只是一个计算方法
计算Cnm mod p,其中p=p1q1×p2q2×pkqk时,我们可以先求出Cnm mod piqi,然后用CRT合并。
那么怎么计算Cnm mod piqi呢?
Cnm=m!n!(mn)!,我们只需要算出m!,n!1,(mn)!1,然后乘在一起。
zjt大爷:n!可能在模piqi的意义下没有逆元啊,那这就是错的了啊
其实这里求得不是逆元(可能没有逆元),求出来的是a×pib(gcd(a,p)=1),前面的a用逆元,后面的次数加加减减一下就好了
问题转换成求n! mod pq
例如n=19,p=3,q=2

19!

=1×2×3××19

=(1×2×4×5×7×8×16×17×19)×(3×6×9×12×15×18)

=(1×2×4×5×7×8×16×17)×19×36×(1×2×3×4×5×6)

=(1×2×4×5×7×8)2×19×36×(1×2×3×4×5×6)

上面这个式子分为四部分:
第一部分:(1×2×4×5×7×8)2。这部分的数不超过pq个,可以暴力算
第二部分:19。这部分的数不超过pq个,可以暴力算
第三部分:36。这个在最后处理时求出m!,n!,(mn)!分别有多少个p(设为x,y,z),则答案要乘上pxyz
第四部分:1×2×3×4×5×6。这个是np!,可以递归处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值