Lucas 定理证明

Lucas 定理

摘自算法竞赛

对于 m,nNm,n \in \mathbb N,和素数 PP,有:

Cmni=0kCmini(modP)\text C_m^n \equiv \prod _{i = 0}^k \text C_{m_i}^{n_i} \pmod P

其中,m=i=0kPi×mim=\sum\limits_{i=0}^k P^i \times m_in=i=0kPi×nin=\sum\limits_{i=0}^k P^i \times n_i,即 mim_inin_i 分别是 mmnnPP 进制展开。即对于 mmnn,计算它们 PP 进制下每一位的组合数,最后相乘。

特别的,规定当有 mi<nim_i < n_i 时,Cmini=0\text C_{m_i}^{n_i}=0,此时 CmnmodP=0\text C_m^n \bmod P =0

上式在编程时的等价式子为:

CmnCmmodPnmodPCm/Pn/P(modP)\text C_m^n \equiv \text C_{m \bmod P}^{n \bmod P}\cdot \text C_{\lfloor m /P\rfloor}^{\lfloor n/P\rfloor} \pmod P

其可通过递归求得。

证明该公式

证明 对于任一素数 PPn[1,P1]n \in [1,P-1],有:

CPn=P!n!(Pn)!=(P1)!(n1)!(Pn)!×Pn=CP1n1×Pn\text C_{P}^{n}=\frac{P!}{n!\cdot(P-n)!}=\frac{(P-1)!}{(n-1)!\cdot(P-n)!}\times \frac{P}{n}=\text C_{P-1}^{n-1}\times \frac{P}{n}

因为 PP 为素数,所以 PPnn 互质,

所以 P/nP/nPP 除不掉,CP1n1\text C_{P-1}^{n-1} 也不能把 PP 除掉,必有 CPn=CP1n1×Pn0(modP)\text C_{P}^{n}=\frac{\text C_{P-1}^{n-1}\times P}{n} \equiv 0 \pmod P

将原式代入二项式定理展开式,得:

(1+x)P=n=0PCPn×1Pn×xn=1+n=1P1CPn×xn  +xP1+xP(modP)(1+x)^P =\sum\limits_{n = 0}^P \text C_{P}^{n} \times \sout{1^{P-n}}\times x^n = 1+\sum\limits_{n = 1}^{P-1} {\text C_P^n} \times x^n \; +x^P \equiv 1+x^P \pmod P


下面推导 CmnCmmodPnmodPCm/Pn/P(modP)\text C_m^n \equiv \text C_{m \bmod P}^{n \bmod P}\cdot \text C_{\lfloor m /P\rfloor}^{\lfloor n/P\rfloor} \pmod P

n=sP+q,  m=tP+rn=sP+q,\;m=tP+rq<Pq<Pr<Pr<P

qqrr 分别为 nnmm 除以 PP 的余数,sstt 分别为其商。

则待证明式为 CmnCrqCts(modP)\text C_m^n \equiv \text C_{r}^{q}\cdot \text C_{t}^{s} \pmod P

另有:

(1+x)m=(1+x)tP+r=(1+x)tP(1+x)r(1+xP)t(1+x)r(i=0tCti×xiP)×(j=0rCrj×xj)(modP)(1+x)^m =(1+x)^{tP+r}=(1+x)^{tP}(1+x)^r \equiv (1+x^P)^t(1+x)^r \\ \equiv (\sum\limits_{i = 0}^t \text{C}_t^i\times x^{iP})\times(\sum\limits_{j = 0}^r \text{C}_r^j\times x^{j}) \pmod P

注意第四项前为恒等号。


现在我们需要对 (1+x)m(1+x)^m,表示其展开后 xnx^n 项的系数。

假设 mod  P\bmod \;P 不存在,因为可以使得 PPxx 互质。

第一种表达 xnx^n 项的系数方式为 Cmn\text C_m^n,由 (1+x)m=i=0mCmixi(1+x)^m=\sum_{i=0}^m \text C_m^i\cdot x^i 得到。

第二种表达方式:

n=sP+qn=sP+q,所以 xn=xsPxqx^n=x^{sP}\cdot x^q。因为 r<Pr<P,所以 (1+x)r(1+x)^r 不可能提供 xsPx^{sP} 项。同理,因为 P>qP>q,所以 (1+xP)t(1+x^P)^t 不可能提供 xqx^q 项。

xnx^n 系数的提供是由 xtPx^{tP} 的系数和 xrx^r 的系数共同相乘提供的。

(1+xP)t(1+x^P)^t 提供 xsPx^{sP} 项,(1+x)r(1+x)^r 提供 xqx^q 项。

所以当 i=s,j=qi=s,j=q 时,两个系数分别为 Cts\text C_t^sCrq\text C_r^q

得证 CmnCrqCts(modP)\text C_m^n \equiv \text C_{r}^{q}\cdot \text C_{t}^{s} \pmod P


Lucas 定理证明
https://formu1-github.github.io/Hexo-blog/2024/10/11/Lucas-定理证明/
作者
Formu1
发布于
2024年10月11日
许可协议