卢卡斯定理

多项式,就是提供了一个代数手段解决问题。——rsy

对于组合数模质数 \(p\) 问题,当 \(n,m\) 较大,\(p\) 较小的时候(\(n \ge p\)),有可能会出现 \(n!\) 没有逆元的情况。那么怎么处理这样的情况呢?这时候需要使用卢卡斯定理。

卢卡斯定理的内容:

\[\dbinom{n}{m} \bmod p = \dbinom{\lfloor\cfrac{n}{p}\rfloor}{\lfloor\cfrac{m}{p}\rfloor} \times \dbinom{n \bmod p}{m \bmod p}\bmod p \]

也有另一个形式(展开之后的):将 \(n,m\) 拆位,假设从低到高有 \(0,...,k\) 位,那么

\[\dbinom{n}{m} \bmod p = \dbinom{n_0}{m_0} \times \dbinom{n_1}{m_1} \times ..., \dbinom{n_k}{m_k}\bmod p \]

证明:
首先有一个重要恒等式:
\((a + b)^p \bmod p = (a^p + b^p) \bmod p\)
这里的 \(p\) 不一定为素数。证明:

\[(a + b)^ p = \sum \limits_{i = 0}^p \dbinom{p}{i}a^p b^{n - p} \]

\[\dbinom{p}{i} = \cfrac{p!}{i!(p-i)!} \]

\(i = 0\)\(i = p\) 的时候分子才有 \(p\) 的因子,因此

\[\dbinom{p}{i} \bmod p= [i = 0 \operatorname{or} i =p] \]

因此 \((a+b)^p\) 也只有 \(0,p\) 这两项是有贡献的。注意推导过程没有用到费马小定理,因此 \(p\) 可以是任意数。

然后的证明凸显了多项式的巧妙。这里引入 \([k]\operatorname{poly} x\) 的记号,\(\operatorname{poly} x\) 表示关于 \(x\) 的多项式。这个记号表示多项式里 \(k\) 的系数。\(x\) 的幂次只是个工具,用来标号。

我们要求 \(\dbinom{n}{m}\) 的取值,就相当于求 \([x^m](1 + x)^n\)。考虑

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

那么

\[[x^m](1+x)^n = [x^m](1 + x^{p})^{\lfloor\frac{n}{p}\rfloor}(1+x)^{n \bmod p} =\sum\limits_{k=0}^m([x^k](1 + x^{p})^{\lfloor\frac{n}{p}\rfloor} [x^{m-k}](1+x)^{n \bmod p}) \]

又因为

\[\begin{array} \left[x^k] (1 + x^p)^{\lfloor\frac{n}{p}\rfloor} \not \equiv 0 \Rightarrow p|k \\ [x^{m-k}] (1+x)^{n \bmod p} \not \equiv 0 \Rightarrow 0\le m-k< p \end{array} \]

所以 \(k = p \times \lfloor\frac{n}{p}\rfloor\) 的时候有贡献。

因此

\[\begin{array} \left \dbinom{n}{m} \\ =[x^m](1+x)^n \\ = [x^{p \times \lfloor\frac{m}{p}\rfloor}](1+x^p)^{\lfloor\frac{n}{p}\rfloor} \times [x^{m \bmod p}](1+x)^{n \bmod p} \\ = [y^{\lfloor\frac{m}{p}\rfloor}](1+y)^{\lfloor\frac{n}{p}\rfloor} \times [x^{m \bmod p}](1+x)^{n \bmod p} (y = x^p) \\ = \dbinom{\lfloor\frac{n}{p}\rfloor}{\lfloor\frac{m}{p}\rfloor} \times \dbinom{n \bmod p}{m \bmod p} \end{array} \]

posted @ 2022-12-20 16:05  OIer某罗  阅读(40)  评论(0编辑  收藏  举报