扩展Lucas算法详解

扩展Lucas算法

介绍:

这段内容主要是关于组合数取模的数学知识介绍:

  • 当正整数n,mn,mn,m很大,质数ppp较小时,求CnmC_{n}^{m}Cnmppp取模后的值可用Lucas定理;
  • ppp不是质数且mmm较小,则可以用扩展Lucas定理,注意扩展Lucas定理与Lucas定理没有一定关心,你只要学会如下知识点就可以:1.质因数分解,2.逆元 ,3.CRT(中国剩余定理) 4.组合数的定义 ,5.组合数的定义。

第一步:中国剩余定理

p=p1r1p2r2⋯pkrkp = p_{1}^{r_{1}} p_{2}^{r_{2}} \cdots p_{k}^{r_{k}}p=p1r1p2r2pkrk,其中pip_{i}pi为质数。我们可以先求出Cnm%p1r1C_{n}^{m} \%p_{1}^{r_{1}}Cnm%p1r1Cnm%p2r2C_{n}^{m} \%p_{2}^{r_{2}}Cnm%p2r2⋯\cdotsCnm%pkrkC_{n}^{m} \%p_{k}^{r_{k}}Cnm%pkrk的值a1,a2,⋯,aka_{1},a_{2},\cdots,a_{k}a1a2ak
我们把CnmC_{n}^{m}Cnm看作未知数x,可以得到以下方程组:

{ x≡a1(modp1r1)x≡a2(modp2r2)x≡a3(modp3r3)⋯⋯x≡an(modpkrk)\begin{cases} x \equiv a_{1} \pmod {p_{1}^{r_{1}}}\\ x \equiv a_{2} \pmod {p_{2}^{r_{2}}}\\ x \equiv a_{3} \pmod {p_{3}^{r_{3}}}\\ \cdots\cdots\\ x \equiv a_{n} \pmod {p_{k}^{r_{k}}} \end{cases} xa1(modp1r1)xa2(modp2r2)xa3(modp3r3)⋯⋯xan(modpkrk)

利用中国剩余定理,我们可以求出aia_iai,它是以pirip^{r_i}_ipiri为周期出现的无穷多个解。而在[0,piri)[0,p^{r_i}_i)[0,piri)这个周期的解,就是Cnm C_{n}^{m} \ % pCnm 后的值。
那么a1,a2⋯,aka_{1},a_{2}\cdots,a_{k}a1a2a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值