費馬小定理 求乘法逆元

2022-05-16 02:36:10 字數 1325 閱讀 5470

//

p3811 【模板】乘法逆元

#includeusing

namespace

std;

inline

void write(long

long

x)

if(x>9) write(x/10

); putchar(x%10+'0'

);}long

long qpow(long

long n,long

long m,long

long

mod)

return ans%mod;

}int

main()

這一道題是洛谷

p3811 【模板】乘法逆元

當然這一道題用費馬小定理還是過不去的

不過可以證明這一做法的正確性

首先我們要保證題目給出的p是質數

所謂費馬小定理就是

a^(p-1) ≡ 1 (mod p)

稍加化簡就可以看出左邊可以化為a*a^(p-2)

把那個單獨的a挪到右邊

所以a^(p-2)=a-1

也就是a^(p-2)就是a在模p意義下的乘法逆元

然而我們可以用快速冪來進行加速

這樣一來算出乙個乘法逆元的時間複雜度就是logn

但是一定要注意 必須p是負數!

上線性篩

//

p3811 【模板】乘法逆元

#includeusing

namespace

std;

inline

void write(long

long

x)

if(x>9) write(x/10

); putchar(x%10+'0'

);}long

long qpow(long

long n,long

long m,long

long

mod)

return ans%mod;

}long

long inv[3000005

];int

main()

還有乙個需要注意的地方

就是那個取模運算是很耗時間的

一開始我把**改成線性篩之後 

在輸出 就是那個write的括號裡又增加了乙個%p

事實上是沒有必要的

結果就因為這個多餘的取模 y以至於我還是t乙個點,,

所以千萬不要多加太多%取模

乘法逆元 費馬小定理

我實在是太.才明白這個qwq 一 前置知識 定義1 給定正整數m,若用m除兩個整數a和b所得的餘數相同,稱a和b對模m同餘,記作a b mod m 並稱該式子為同余式 否則稱a和b對模m不同餘 二 乘法逆元 若整數b,p互質,並且b a,則存在乙個整數x,使得 a b a x mod p 稱x為b的...

費馬小定理求逆元

求餘的概念 a b p a p b p p a b p a p b p p a b p a p b p p 為什麼要求逆元 對於一些題目,我們必須在中間過程中進行求餘,否則數字太大,電腦存不下,那如果這個算式中出現除法,我們是不是對這個算式就無法計算了呢?這時候就用到了逆元。費馬曾經說過 費馬小定理...

乘法逆元與費馬小定理

乘法逆元 我們知道 a b m a 1 b m 令1 b 等於 h 那麼 h就是b關於m的乘法逆元,其實就是關於m的乙個相反數,b h 1 m 那麼我們如何求乘法逆元呢 擴充套件歐幾里得演算法b h 1 m 可以等價於b x m y 1 那麼我們主需要呼叫歐幾里得演算法求解出來就可以了。int ca...