重修 Lucas & exLucas

Lucas

内容

\[\binom{ap+b}{cp+d}\equiv\binom{a}{c}\binom{b}{d}\pmod{p} \]

其中 \(p\) 为素数,\(0\le b,d<p\)

也就是说将两个数分别 \(p\) 进制分解,对应位形成的组合数相乘。

推论(重要)

\(p=2\) 时有

\[\binom{n}{m}\equiv[m\subseteq n]\pmod{2} \]

其中 \(\subseteq\) 表示二进制(相当于状压)的包含。

证明

以下等号均指 \(\bmod p\) 意义下相等。

\[\begin{aligned} \binom{ap+b}{cp+d}&=[x^{cp+d}](x+1)^{ap+b} \\&=[x^{cp+d}]((x+1)^p)^a(x+1)^b \\&=[x^{cp+d}](x^p+1)^a(x+1)^b \\&=([x^{cp}](x^p+1)^a)([x^d](x+1)^b) \\&=([x^c](x+1)^a)([x^d](x+1)^b) \\&=\binom{a}{c}\binom{b}{d} \end{aligned} \]

其中

\[(x+1)^p\equiv x^p+1\pmod p \]

可用二项式定理证明。

exLucas

将模数 \(M\) 素因数分解,设当前枚举到因子 \(p^e\),则求出 \(\binom{n}{m}\bmod p^e\) 后 CRT 即可。

\[\binom{n}{m}\equiv\frac{n!}{m!(n-m)!}\equiv \frac{\frac{n!}{p^x}}{\frac{m!}{p^y}\frac{(n-m)!}{p^z}}p^{x-y-z}\pmod{p^e} \]

其中 \(x,y,z\) 分别为三个阶乘中 \(p\) 因子的个数,由于组合数为整数,\(x-y-z\ge 0\)

此时分母中两部分都是与 \(p^e\) 互质的整数了,存在逆元(exgcd)。所以我们只需要求出 \(F(n)=\frac{n!}{p^x}\bmod p^e\)\(x\)\(n!\)\(p\) 因子个数)即可。

通过拆分 \(n!\) 连乘中 \(p\) 的倍数,非 \(p\) 倍数的循环节和余项,得:

\[n!= p^{\lfloor n/p\rfloor} (\lfloor\frac{n}{p}\rfloor)! \left(\prod_{i=1,p\not\mid i}^{p^e}i\right)^{\lfloor n/p^e\rfloor} \prod_{i=1,p\not\mid i}^{n\bmod p^e}i \]

所以

\[F(n)=F(\lfloor\frac{n}{p}\rfloor) \left(\prod_{i=1,p\not\mid i}^{p^e}i\right)^{\lfloor n/p^e\rfloor} \prod_{i=1,p\not\mid i}^{n\bmod p^e}i \]

边界条件 \(F(0)=1\)

posted @ 2022-10-19 21:18  ShaoJia  阅读(22)  评论(0编辑  收藏  举报