本文搬运自本人初中博客园博客,若图片加载不出来,可到原文查看:https://www.cnblogs.com/zhangtingxi/p/15657340.html

Lacus

求:

Cmn mod p\Large C_m^n~mod ~p

则:

Cmn mod p=Cmpnp×Cm mod pn mod p mod p\Large C_m^n~mod~p=C_{\frac{m}{p}}^{\frac{n}{p}} \times C_{m~mod~p}^{n~mod~p}~mod~p

由于 Cm mod pn mod pC_{m~mod~p}^{n~mod~p} 上下两项都比 pp 小,可以直接套组合数公式。

而前面 CmpnpC_{\frac{m}{p}}^{\frac{n}{p}} 可以继续套lucas求解。

证明懒得写。

Code:

1
2
3
4
5
int lucas(int m, int n)
{
if(m==0) return 1;
return lucas(m/p, n/p)*C(m%p, n%p)%p;
}