盧卡斯定理證明


盧卡斯定理

  對於非負整數$a$,$b$和質數$p$,有$$C_{a}^{b} \equiv C_{a~mod~p}^{b~mod~p} \cdot C_{\lfloor{a/p}\rfloor}^{\lfloor{b/p}\rfloor}~~\left( {mod~p} \right)$$

 

證明1

  首先,我們先證明$$\left( {1 + x} \right)^{p} \equiv 1 + x^{p}~~\left( {mod~p} \right)$$因為$$\left( {1 + x} \right)^{p} = C_{p}^{0}x^{0} + C_{p}^{1}x^{1} + C_{p}^{2}x^{2} + \cdot \cdot \cdot + C_{p}^{p}x^{p}$$其中$$C_{p}^{i} = \frac{p!}{\left( {p - i} \right)! \cdot i!}$$由於$p$是質數,所以在上式的分母中,不存在可以消去分子中$p$的數,因此當$i = 1,~2,~...,~p - 1$時,有$$C_{p}^{i} = \frac{p!}{\left( {p - i} \right)! \cdot i!} \equiv 0~~\left( {mod~p} \right)$$因此$$\left( {1 + x} \right)^{p} = C_{p}^{0}x^{0} + C_{p}^{1}x^{1} + C_{p}^{2}x^{2} + \cdot \cdot \cdot + C_{p}^{p}x^{p} \equiv C_{p}^{0}x^{0} + C_{p}^{p}x^{p} = 1 + x^{p}~~\left( {mod~p} \right)$$即$$\left( {1 + x} \right)^{p} \equiv 1 + x^{p}~~\left( {mod~p} \right)$$

  然后我們接着來證明$$\left( {1 + x} \right)^{p^{\alpha}} \equiv 1 + x^{p^{\alpha}}~~\left( {mod~p} \right)$$一樣有$$\left( {1 + x} \right)^{p^{\alpha}} = C_{p}^{0}x^{0} + C_{p}^{1}x^{1} + C_{p}^{2}x^{2} + \cdot \cdot \cdot + C_{p}^{p}x^{p^{\alpha}}$$其中$$C_{p^{\alpha}}^{i} = \frac{p^{\alpha}!}{\left( {p^{\alpha} - i} \right)! \cdot i!}$$可以發現,當$i = 1,~2,~...,{~p}^{\alpha} - 1$時,分子中$p$的倍數的個數總是大於分母中$p$的倍數的個數。這是因為分子中$p$的倍數的個數為$\frac{p^{\alpha}}{p} = p^{\alpha - 1}$,分母中$p$的倍數的個數為$\left\lfloor \frac{p^{\alpha} - i}{p} \right\rfloor + \left\lfloor \frac{i}{p} \right\rfloor$。當$i = 1,~2,~...,{~p}^{\alpha} - 1$時,總是滿足$$p^{\alpha - 1} < \left\lfloor \frac{p^{\alpha} - i}{p} \right\rfloor + \left\lfloor \frac{i}{p} \right\rfloor$$因此整個$C_{p^{\alpha}}^{i}$的值是$p$的倍數。因此有$$C_{p^{\alpha}}^{i} = \frac{p^{\alpha}!}{\left( {p^{\alpha} - i} \right)! \cdot i!} \equiv 0~~\left( {mod~p} \right)$$因此有$$\left( {1 + x} \right)^{p^{\alpha}} = C_{p}^{0}x^{0} + C_{p}^{1}x^{1} + C_{p}^{2}x^{2} + \cdot \cdot \cdot + C_{p}^{p}x^{p^{\alpha}} \equiv 1 + x^{p^{\alpha}}~~\left( {mod~p} \right)$$

  接下來我們把$a$和$b$轉換為對應的$p$進制數,即$$a = a_{k}p^{k} + a_{k - 1}p^{k - 1} + \cdot \cdot \cdot + a_{0}$$$$b = b_{k}p^{k} + b_{k - 1}p^{k - 1} + \cdot \cdot \cdot + b_{0}$$接着我們有$$\begin{align*} \left( {1 + x} \right)^{a} &= \left( {1 + x} \right)^{a_{k}~p^{k}~ + ~a_{k - 1}~~p^{k - 1}~ + ~ \cdot \cdot \cdot ~ + ~a_{0}} \\ &= \left( \left( {1 + x} \right)^{p^{k}} \right)^{a_{k}} \cdot \left( \left( {1 + x} \right)^{p^{k - 1}} \right)^{a_{k - 1}} \cdot ~ \cdot \cdot \cdot ~ \cdot \left( \left( {1 + x} \right)^{p^{0}} \right)^{a_{0}} \\ &\equiv \left( {1 + x}^{p^{k}} \right)^{a_{k}} \cdot \left( {1 + x}^{p^{k - 1}} \right)^{a_{k - 1}} \cdot ~ \cdot \cdot \cdot ~ \cdot \left( {1 + x} \right)^{a_{0}}~~\left( {mod~p} \right) \end{align*}$$我們要知道$C_{a}^{b}$的值,其實就是左式展開中的$x^{b}$的系數。而在右式中,等價於要知道$x^{b_{k~}~p^{k}~ + ~b_{k - 1}~~p^{k - 1}~ + ~ \cdot \cdot \cdot ~ + ~b_{0}}$的系數,即$$C_{a_{k}}^{b_{k}} \cdot C_{a_{k - 1}}^{b_{k - 1}} \cdot ~ \cdot \cdot \cdot ~ \cdot C_{a_{0}}^{b_{0}}$$因此有$$C_{a}^{b} \equiv C_{a_{k}}^{b_{k}} \cdot C_{a_{k - 1}}^{b_{k - 1}} \cdot ~ \cdot \cdot \cdot ~ \cdot C_{a_{0}}^{b_{0}}~~\left( {mod~p} \right)$$為了將上式轉換為如下形式$$C_{a}^{b} \equiv C_{a~mod~p}^{b~mod~p} \cdot C_{\lfloor{a/p}\rfloor}^{\lfloor{b/p}\rfloor}~~\left( {mod~p} \right)$$我們先把$$C_{a_{k}}^{b_{k}} \cdot C_{a_{k - 1}}^{b_{k - 1}} \cdot ~ \cdot \cdot \cdot ~ \cdot C_{a_{0}}^{b_{0}}$$拆分成$C_{a_{k}}^{b_{k}} \cdot C_{a_{k - 1}}^{b_{k - 1}} \cdot ~ \cdot \cdot \cdot ~ \cdot C_{a_{1}}^{b_{1}}$和$C_{a_{0}}^{b_{0}}$這兩部分。

  首先對於$C_{a_{0}}^{b_{0}}$,其實它就等於$C_{a~mod~p}^{b~mod~p}$,這是因為我們要得到某個數的$p$進制數,就要用$p$整除這個數,得到一個商和余數;再用$p$去除商,又得到一個商和余數,以此類推,直到商為小於$p$時為止。以$a$為例,把最先得到的余數作為$p$進制數的最低位有效位,也就是$a_{0}$。我們又知道$a$可以表述為這種形式$a = \left\lfloor \frac{a}{p} \right\rfloor \cdot p + r$,這里的余數$r$正是對應於$a_{0}$。以此類推$b$也一樣。

  然后就是$C_{a_{k}}^{b_{k}} \cdot C_{a_{k - 1}}^{b_{k - 1}} \cdot ~ \cdot \cdot \cdot ~ \cdot C_{a_{1}}^{b_{1}}$。試想一下,我們是通過把$a$,$b$轉換為$p$進制$$a = a_{k}p^{k} + a_{k - 1}p^{k - 1} + \cdot \cdot \cdot + a_{0}$$$$b = b_{k}p^{k} + b_{k - 1}p^{k - 1} + \cdot \cdot \cdot + b_{0}$$進而推出$$C_{a}^{b} \equiv C_{a_{k}}^{b_{k}} \cdot C_{a_{k - 1}}^{b_{k - 1}} \cdot ~ \cdot \cdot \cdot ~ \cdot C_{a_{0}}^{b_{0}}~~\left( {mod~p} \right)$$現在我們把$a$,$b$都右移$1$位,得到$\left\lfloor \frac{a}{p} \right\rfloor$和$\left\lfloor \frac{b}{p} \right\rfloor$,對應的$p$進制就是$$a = a_{k}p^{k - 1} + a_{k - 1}p^{k - 2} + \cdot \cdot \cdot + a_{1}$$$$b = b_{k}p^{k - 1} + b_{k - 1}p^{k - 2} + \cdot \cdot \cdot + b_{1}$$用類比的方法,我們就可以得到$$C_{a_{k}}^{b_{k}} \cdot C_{a_{k - 1}}^{b_{k - 1}} \cdot ~ \cdot \cdot \cdot ~ \cdot C_{a_{1}}^{b_{1}} \equiv C_{\lfloor{a/p}\rfloor}^{\lfloor{b/p}\rfloor}~~\left( {mod~p} \right)$$事實上這是正確的,我們可以從$C_{\lfloor{a/p}\rfloor}^{\lfloor{b/p}\rfloor}$入手分析,方法與上面分析$C_{a}^{b}$的一樣(這也暗示我們可以用遞歸來求解),同樣會得到$$C_{\lfloor{a/p}\rfloor}^{\lfloor{b/p}\rfloor} \equiv C_{a_{k}}^{b_{k}} \cdot C_{a_{k - 1}}^{b_{k - 1}} \cdot ~ \cdot \cdot \cdot ~ \cdot C_{a_{1}}^{b_{1}}~~\left( {mod~p} \right)$$

  因此,有$$C_{a}^{b} \equiv C_{a_{k}}^{b_{k}} \cdot C_{a_{k - 1}}^{b_{k - 1}} \cdot ~ \cdot \cdot \cdot ~ \cdot C_{a_{0}}^{b_{0}} \equiv C_{a~mod~p}^{b~mod~p} \cdot C_{\lfloor{a/p}\rfloor}^{\lfloor{b/p}\rfloor}~~\left( {mod~p} \right)$$定理得證

 

證明2

  這里再給出另一種證法。

  我們設

$$\left\{ \begin{matrix}
{\left\lfloor {a/p} \right\rfloor = q_{a}} \\
{\left\lfloor {b/p} \right\rfloor = q_{b}} \\
\end{matrix} \right.,~\left\{ \begin{matrix}
{a~mod~p = r_{a}} \\
{b~mod~p = r_{b}} \\
\end{matrix} \right.$$所以有

$$\left\{ \begin{matrix}
{a = q_{a} \cdot p + r_{a}} \\
{b = q_{b} \cdot p + r_{b}} \\
\end{matrix} \right.$$根據二項式定理有$$\left( {1 + x} \right)^{a} = {\sum\limits_{k = 0}^{a}{C_{a}^{k} \cdot x^{k}}}$$同時也有$$\begin{align*} \left( {1 + x} \right)^{a} &= \left( {1 + x} \right)^{q_{a} \cdot p + r_{a}} \\ &= \left( {1 + x} \right)^{q_{a} \cdot p} \cdot \left( {1 + x} \right)^{r_{a}} \\ &\equiv \left( {1 + x^{p}} \right)^{q_{a}} \cdot \left( {1 + x} \right)^{r_{a}}~~\left( {mod~p} \right) \\ &= {\sum\limits_{i = 0}^{q_{a}}{C_{q_{a}}^{i} \cdot x^{i \cdot p}}} \cdot {\sum\limits_{j = 0}^{r_{a}}{C_{r_{a}}^{j} \cdot x^{j}}} \\ &= {\sum\limits_{i = 0}^{q_{a}}{\sum\limits_{j = 0}^{r_{a}}{C_{q_{a}}^{i} \cdot C_{r_{a}}^{j} \cdot x^{i \cdot p + j}}}} \end{align*}$$即$$\left( {1 + x} \right)^{a} \equiv {\sum\limits_{i = 0}^{q_{a}}{\sum\limits_{j = 0}^{r_{a}}{C_{q_{a}}^{i} \cdot C_{r_{a}}^{j} \cdot x^{i \cdot p + j}}}}~~\left( {mod~p} \right)$$我們令$x$的指數為$k = i \cdot p + j$,其中$0 \leq i \leq q_{a},~0 \leq j \leq p - 1$,同時有$0 \leq k \leq a$,所以可以把上式修改為從$0$枚舉到$a$,$i$和$j$就變為$$i = \left\lfloor \frac{k}{p} \right\rfloor + \left\lfloor \frac{j}{p} \right\rfloor = \left\lfloor \frac{k}{p} \right\rfloor$$$$j = k - i \cdot p = k~mod~p$$所以就有$$\left( {1 + x} \right)^{a} \equiv {\sum\limits_{k = 0}^{a}{C_{q_{a}}^{\lfloor{k/p}\rfloor} \cdot C_{r_{a}}^{k~mod~p} \cdot x^{k}}}~~\left( {mod~p} \right)$$綜合上面,得到$${\sum\limits_{k = 0}^{a}{C_{a}^{k} \cdot x^{k}}} \equiv {\sum\limits_{k = 0}^{a}{C_{q_{a}}^{\lfloor{k/p}\rfloor} \cdot C_{r_{a}}^{k~mod~p} \cdot x^{k}}}~~\left( {mod~p} \right)$$然后我們令$k=b$就會得到$$C_{a}^{b} \equiv C_{q_{a}}^{\lfloor{b/p}\rfloor} \cdot C_{r_{a}}^{b~mod~p}~~\left( {mod~p} \right)$$即$$C_{a}^{b} \equiv C_{\lfloor{a/p}\rfloor}^{\lfloor{b/p}\rfloor} \cdot C_{a~mod~p}^{b~mod~p}~~\left( {mod~p} \right)$$定理得證

 

盧卡斯定理代碼

  什么時候用盧卡斯定理呢,只要$a$的值大於$p$就需要用到盧卡斯定理了。如果$p$比$a$小,就不能保證$a-b$和$b$的逆元存在了,它們可能是$p$的倍數。

  相關代碼如下:

 1 int qmi(int a, int k, int p) {
 2     int ret = 1;
 3     while (k) {
 4         if (k & 1) ret = (long long)ret * a % p;
 5         k >>= 1;
 6         a = (long long)a * a % p;
 7     }
 8     
 9     return ret;
10 }
11 
12 int C(int a, int b, int p) {
13     int ret = 1;
14     for (int i = 1, j = a; i <= b; i++, j--) {
15         ret = (long long)ret * j % p;
16         // 因為總是滿足i < p且p為質數,所以應用費馬小定理,用快速冪來求得在模p下i的逆元 
17         ret = (long long)ret * qmi(i, p - 2, p) % p;
18     }
19     
20     return ret;
21 }
22 
23 int lucas(long long a, long long b, int p) {
24     if (a < p && b < p) return C(a, b, p);
25     return (long long)C(a % p, b % p, p) * lucas(a / p, b / p, p) % p;
26 }

 

參考資料

  AcWing 887. 求組合數 III:https://www.acwing.com/video/308/

  算法學習筆記(25): 盧卡斯定理:https://zhuanlan.zhihu.com/p/116698264


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM