lucas定理學習小記

2021-07-14 10:45:31 字數 497 閱讀 1803

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)

那麼:

(在程式設計時你只要繼續對 呼叫lucas定理即可。

**可以遞迴的去完成這個過程,其中遞迴終點為t = 0 ;

時間o(log(以p為底)(n)*p))

模板:(sdoi2010古代豬文部分**)

function lucas(a,b,x:int64):int64;

begin

if b=0 then exit(1);

exit( c(a mod t[x],b mod t[x],x)*lucas(a div t[x],b div t[x],x)mod t[x] );

end;

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定理 學習筆記

考慮經典問題 求解 binom mod p 的值,p 是質數。這樣的問題,我們一般採用預處理階乘及階乘逆元的方式達到 mathcal o 1 查詢,但當 n,m 的範圍比較大,比如 1e9 之類的,預處理階乘顯然是不可能的了,那我們有什麼方法呢 lucas定理 binom equiv binom b...

數學 Lucas定理

lucas定理解決的一類問題是c n,m p,其中n和m很大的情況 顯然如果n和m在1e7的範圍內,我們可以很輕鬆的預處理o p o 1 得到c n,m p 那麼n和m很大的時候就可以靠lucas定理了 lucas定理 c n,m p c n p,m p c n p m p p 這樣就可以把n,m很...