Lucas定理及應用

2022-02-27 07:00:15 字數 923 閱讀 4218

額,前兩天剛講了資料結構,今天我來講講組合數學中的一種奇妙優化——lucas

先看這樣乙個東西

沒學過lucas的肯定會說:還不簡單?處理逆元,邊乘邊膜唄

是,可以,但注意一下資料範圍

你算這一次,你需要跑25000下

那麼你如果求c199999 1~c199999 52222 呢?

你會發現你的複雜度上天了

所以我們會用到乙個神奇的定理:lucas定理

定理內容如下:

lucas(n,m,p)=c(n%p,m%p)*lucas(n/p,m/p,p)

不好玩,是嗎?

那麼我來證明一下

由二項式定理可得,cmn等於(x+1)^m中n次項的係數

那麼我們按lucas展開

原式=(x+1)^(p^k*ak)*(x+1)^(p^(k-1)*a(k-1))*……*(x+1)^(p*a1)+(x+1)^(1*a0)

=[(x+1)^(p^k)]^ak……

由費馬小定理可知,其%p後可轉化為 (x+1)^ak*(x+1)^a(k-1)*……*(x+1)^a1*(x+1)^a0

原題轉化為求上式的n次項的係數

同理,由於每一項已經消去了p^k次方 故即求每一項中的bk次項係數 即為lucas

以前的組合數,我們一位一位地算(累死了)

現在的組合數,我們只用算%p出來的(這不就是log p m次嗎?)

o(n)到o(logn)

大有長進啊

大家應該都會

下面看幾道好題

裸的板子,不說什麼

帶了預處理階乘的lucas

lucas合併

禮物,古代豬文

擴充套件lucas

Lucas定理 推導及證明

當n m為大數,p為素數時,lucas定理是用來求 c n,m mod p的 值。適用領域範圍 在數論中求大組合數取模。表示式 c n,m p c n p,m p c n p,m p p lucas定理 我們令 n sp q m tp r q r p 那麼 在程式設計時你只要繼續對 呼叫lucas定...

Lucas定理的理解與應用

lucas定理 用於計算組合數模除素數後的值,其實就是把 n,m 分別表示為p進製,累乘各位的可能取的個數,得到最終的結果 推論 n m m則c n,m 為奇數 即c n,m 2 1,即m二進位制的每一位n都必須為1,所以n m m 應用 題意 問c n,0 c n,1 c n,n 中有多少個為奇數...

數學 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很...