拓展盧卡斯定理(偽)

2022-02-19 15:56:22 字數 1128 閱讀 6580

求 \(a^\pmod\)

資料範圍均為1e9

首先觀察到999999599是乙個質數。根據費馬小定理,我們只需要先求出 \(\bmod\),然後使用快速冪演算法即可求得答案。

看到組合數取模這樣的式子,自然想到用盧卡斯定理來求解。但是盧卡斯定理有乙個限制:模數必須是質數。

拓展盧卡斯定理是乙個對盧卡斯定理的推廣,可以解決模數不是質數的情況。關於它的詳細資料可以參照盧卡斯定理 - oi wiki。

然而這題不用拓展盧卡斯定理就能做啊σ(っ °д °;)っ或者說這是乙個拓展盧卡斯定理的簡化情況。

我們對999999598進行質因數分解:

嗯?正好四個質因數?那麼我們可以使用如下方法求解:

\[\beginc\equiv\pmod\\c\equiv\pmod\\c\equiv\pmod\\c\equiv\pmod\end

\]也就是說,我們可以先求出\(\bmod\),\(\bmod\),\(\bmod\)和\(\bmod\),然後使用中國剩餘定理來解決!

注:**中那些莫名其妙的常數是中國剩餘定理的中間計算結果

#define proname "silk"

#include #define ll long long

#define re register

#define il inline

#define gc getchar

#define pc putchar

template void read(t &x)

template void print(t x)

template void prisp(t x)

template void priln(t x)

ll a, n, m;

ll fac[10000];

ll pow(ll b, ll t, int p)

ll c(ll n, ll k, int p)

ll lucas(ll n, ll k, ll p)

ll calc(ll n, ll k, int p)

const int p = 999999599, m = p - 1;

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...