Lucas 定理

关于 Lucas 定理

起初,有一个 \(\binom{n}{m}\),我们想要计算它,但它可能太大了,我们只想要计算它取模质数 \(p\) 的结果。但当 \(n,m\) 真的很大的时候,我们还是没有办法计算它。这可真是太不好了。

考虑怎么计算 \(\binom{n}{m} \%\ p\) 的结果,容易想到:

\[\binom{n}{m}=\dfrac{n!}{m!(n-m)!} \]

我们是否可以依据这个进行一些大力讨论得到结论呢?

好像有点麻烦。

但是,我们还有:

\[(1+x)^n=\sum_{i=0}^n\binom{n}{i}x^i \]

我们想要计算 \(x^m\) 的系数模 \(p\) 的结果。

考虑到

\[(1+x)^n\equiv (1+x)^{p\lfloor \frac{n}{p}\rfloor}(1+x)^{n\% p} \]

后面那一项指数小于 \(p\),没什么性质,也没什么影响,我们可以先不考虑。

前面一项我们已经拆出来了一个 \(p\),考虑这样做是否有什么性质。

\[(1+x)^p\equiv \sum_{i=0}^p\binom{p}{i}x^i (\bmod p) \]

注意到 \(\binom{p}{i}\equiv[i=0 \or i=p]\),有

\[(1+x)^p\equiv1+x^p(\bmod p) \]

那么

\[(1+x)^n\equiv(1+x^p)^{\lfloor\frac{n}{p}\rfloor}(1+x)^{n\% p} \]

考虑这样一个多项式中 \(x^m\) 的系数。

前面项只会贡献 \(p\) 的倍数,后面项只会贡献 \(<p\) 的数,所以 \(x^m=x^{p\lfloor \frac{m}{p}\rfloor}x^{m\% p}\),也即,\(m\) 的分解方式是唯一的。

所以

\[\binom{n}{m}\equiv\binom{\lfloor\frac{n}{p}\rfloor}{\lfloor\frac{m}{p}\rfloor}\binom{n\% p}{m\% p}(\bmod p) \]

后面可以先预处理直接计算,前面可以递归计算。

复杂度 \(O(p)-O(\log n)\)

posted @ 2023-02-21 16:52  PYD1  阅读(37)  评论(0)    收藏  举报