乘法逆元
一、定義
若在mod p意義下,對於一個整數a,有a*b≡1(mod p),那么這個整數d即為a的 乘法逆元,同時a也為d的乘法逆元
二、求法
(1).費馬小定理
當p為質數時,對於任意整數a,滿足ap-a是p的整數倍
在mod p意義下可以表示為
ap-a≡0(mod p)
即為ap≡a(mod p)
所以ap-1≡1(mod p)
即為a*ap-2≡1(mod p)
所以ap-2即為a在 mod p 意義下的逆元
(2).擴展歐幾里得
ax≡1(mod p)可以轉化成ax+py=1的形式
那么顯然我們可以用擴展歐幾里得算法解2元一次方程解出x
(3).O(n)遞推1~n的逆元
我們就可以做到O(n)遞推
inv[i]=(p-p/i)*inv[p%i]%p;
從某個dalao博客里盜的圖欸嘿嘿
(4).O(n)求階乘的逆元
我們假設有x使得 a!x≡1(mod p)
則(a-1)!*ax≡1(mod p)
所以說(a-1)!的逆元為 ax%p
那么我們就可以先求出n!的逆元再倒推回去
(5).歐拉定理
由aφ(p)≡1 (mod p)得aφ(p)−1是a的逆元
模數不是素數時同樣適用
(6).一個小推論
(a/b)%p=(a%(bp))/ p
證明:
(a/b)%p=a/b-⌊(a/b)/p⌋*p
=a/b-⌊a/(b*p)⌋*p
=a/b-⌊a/(b*p)⌋*b*p/b
=(a%(bp) )/p