lucas定理 +证明 学习笔记

2023-05-01,,

lucas定理

p为素数
\[\dbinom n m\equiv\dbinom {n\%p} {m\%p} \dbinom {n/p}{m/p}(mod p)\]
左边一项直接求,右边可递归处理,不包含求组合数复杂度是\(log_p(m)\)

证明

我们记\(n=sp+q,m=tp+r,(q,r<p)\)
\[\dbinom {sp+q} {tp+r} \equiv \dbinom {s} {t} \dbinom {q} {r} (mod p)\]
有这么一个性质\(\binom p d\equiv0,0<d<p\)

我们考虑使用幂来检验
利用扰动法(算两次)的思想
\[
\begin{aligned}
(1+x)^n&\equiv(1+x)^q*[(1+x)^p]^s (mod p)\\
&\equiv(1+x)^q*[\sum_{t=0}^p \binom p i x^i]^s(mod p)\\
根据上面的那个性质\\
&\equiv(1+x)^q*(1+x^p)^s(mod p)\\
&\equiv\sum_{i=0}^s \binom s i x^{pt} * \sum_{j=0}^q\binom q j x^j(mod p)\\
则有\\
(1+x)^{sp+q}&\equiv\sum_{i=0}^s \binom s i x^{pt} * \sum_{j=0}^q\binom q j x^j(mod p)\\
\sum_{k=0}^{sp+q}\binom {sp+q} {k} x^k&\equiv\sum_{i=0}^s \binom s i x^{pt} * \sum_{j=0}^q\binom q j x^j(mod p)\\
左边x^{tp+r}的系数为\binom {sp+q}{tp+r}&\\
右边x^{tp+r}的系数为\binom s t\binom q r &(因为q<p)\\
系数在mod意义下相等\\
得证
\end{aligned}
\]

推广

利用\(lucas\)定理可以\(O(p)\)预处理逆元+\(O(log_p(n))\)回答询问
那么p为合数呢?
1.如果p较小
方法1:
\(O(p)\)预处理出\(p\)内的素数,共\(\frac P {ln P}\)个
询问时扫一次素数
求出n,m,n-m中含有该素数多少个,求一个素数出现多少次要翻倍log次
复杂度\(\frac P {ln P}*\log n\approx n\)
方法2:
将p分解质因数,每个lucas求一次,再用中国剩余定理
2.如果p较大:
有一篇FFT快速求n!的方法
布吉岛有没有用
先 挖坑

lucas定理 +证明 学习笔记的相关教程结束。

《lucas定理 +证明 学习笔记.doc》

下载本文的Word格式文档,以方便收藏与打印。