Lucas定理 學習筆記

2022-06-06 08:03:11 字數 1394 閱讀 5828

考慮經典問題:求解\(\binom\mod p\)的值,\(p\)是質數。

這樣的問題,我們一般採用預處理階乘及階乘逆元的方式達到\(\mathcal o(1)\)查詢,但當\(n,m\)的範圍比較大,比如\(1e9\)之類的,預處理階乘顯然是不可能的了,那我們有什麼方法呢:

lucas定理:

\[\binom\equiv \binom\binom \pmod p

\]有了這個定理,實現就很簡單了,將\(\binom\)遞迴處理,將\(\binom\)用線性求逆元的方法完成,總複雜度是\(o(p+log_p(n))\),可以通過這道洛谷模板題,這道題資料範圍不知道為什麼只出到\(1e5\),預處理階乘都可以過。。。事實上\(lucas\)可以做到\(n,m\le 1e18\),只要\(p\)比較小且是質數就行了。

考慮定理的證明:

首先給出引理:

引理: 當\(p\)為質數時,滿足

\[(a+b)^p\equiv a^p+b^p\pmod p

\]考慮\(\binom \mod p\),因為\(\binom=\frac\),所以只要\(i\not=p\)且\(p-i\not=p\),這個式子一定\(=0\),因此只有在\(i=0\)或\(p\)時原式值大於\(0\)。

於是由二項式定理:

\[(a+b)^p=\sum_^\binoma^ib^\equiv \binom p0 b^p+\binom ppa^p\equiv a^p+b^p\pmod p

\]

開始推導,假設\(n=n_0p+n_1,m=m_0p+m_1\),那麼我們需要證明得就是:

\[\binom nm \equiv \binom\binom\pmod p

\]於是有:

\[\begin

(1+x)^n&\equiv (1+x)^\\

&\equiv (1+x)^(1+x)^\\

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

&\equiv (1+x^p)^(1+x)^\\

&\equiv \sum_^\binomx^\sum_^\binomx^j\pmod p

\end

\]再回到二項式定理得到\((1+x)^n\)的另一種表示式:

\[(1+x)^n=\sum_^\binomx^i\]故

\[\sum_^\binomx^i\equiv \sum_^\binomx^\sum_^\binomx^j\pmod p

\]左式的\(x^m\)次項的係數就是\(\binom\),而右式中\(n_1,因此右式中\(x^m\)只能由\(x^\times x^\)得到,係數就是

\[\binom\binom

\]因此:

\[\binom\equiv \binom\binom\pmod p

\]\(lucas\)定理得證。

Lucas定理學習筆記

equiv rfloor choose lfloor frac rfloor times mod p 此處的 表示的是取模運算。考慮化簡 frac 不難發現當n和m都遠大於p的時候為了簡化運算我們可以將n,m,n m 都給按照p分段,如果 n p geq m p 那麼可以發現以分數線為界,分數線上面...

lucas定理學習小記

lucas是數論定理,運用到oi上時,就會發現非常便利,它可以在極快的時間內算出c n,m mod p,p為質數。時間複雜度為o log 以p為底 n p lucas定理 c n,m p c n p,m p c n p,m p p 我們令n sp q m tp r q r p 那麼 在程式設計時你只...

主定理學習筆記

主定理用於求遞推方程的階。設a 1,b 1為常數,f n 為函式,t n 為非負整數,且 t n at n b f n 注意a b取值範圍 有以下三種結果 若f n o nlogba 0,則t n nlogba 若f n nlogba 則t n nlogba logn 若f n nlogba 0,且...