盧卡斯定理學習筆記

2022-02-24 16:26:47 字數 746 閱讀 5673

是乙個不用懂證明只記結論的定理

首先我們學盧卡斯定理之前,需要了解的乙個東西逆元

逆元部落格講解傳送門

在這裡,我們需要用到線性求逆元的方法。

我們知道組合數公式$$c^n_m=\frac$$

盧卡斯定理的公式是

\[c^m_n=\prod^k_c^_\pmod p \\

n=n_p^+n_p^+\dots +n_p+n_0 \\

m=m_p^+m_p^+\dots +n_p+n_0 \\

\]這樣將組合數的求解分解為小問題的乘積,下面考慮計算c(ni, mi) %p.

已知\(c(n, m)\ mod\ p = \frac\ mod\ p\)。當我們要求(a/b)mod p的值,且b很大,無法直接求得a/b的值時,我們可以轉而使用乘法逆元k,將a乘上k再模p,即(a*k) mod p。 其結果與(a/b) mod p等價。

於是,簡單的**就這樣出現了

#include #include #include #include #include #define ll long long

using namespace std;

int k,n,m,p;

ll inv[100005],fac[100005];

ll lucas(int x,int y)

void get()

int main()

盧卡斯定理

問題求解 c m pmod 的值 c m frac color color 當分母含有x個p因子,分子含有y個p因子。color m pmod不為0 color color 分子分母p因子個數相同,算出的答案就是答案。不同,答案就是0.我的 但是因為我還沒看懂的原因,先留坑.include usin...

盧卡斯 Lucas 定理

之前有寫過一篇部落格是求組合數 取模 的兩種方法。那篇文章裡介紹的方法其實也還有侷限性,pascal打表由於記憶體的限制一般只用於求取1000以內的組合數,而使用逆元套公式的方法其實也只適用於求取的組合數 c n,m p中,n 和 m均不大於要求的模數 p 這樣就導致了乙個很尷尬的問題 如果要求取的...

模板 盧卡斯定理

lucas定理是用來求 cm nmod p cnm modp 的值。其中 n n m role presentation style position relative m m是非負整數,p p 是素數。一般用於 n,m role presentation style position relati...