例題
通常情況下,模運算有加法、乘法,減法的分配率,即: (a
+b)%
m=(a
%m+b
%m)%
m (a+
b)%m
=(a%
m+b%
m)%m
(a−b)%m
=(a%
m−b%
m)%m
( a−
b)%m
=(a%
m−b%
m)%m
(a×b)%m
=(a%
m×b%
m)%m
( a×
b)%m
=(a%
m×b%
m)%m
(模運算為最高端運算,負數不考慮= =)
但是有除法怎麼辦?顯然ab
%m≠a
%mb%
m ab%
m≠a%
mb%m
,需要用逆元將其變為乘法,然後使用分配率。若a
b≡1(
modm
) ab≡
1(mo
dm
),則稱
a a
與b' role="presentation">bb在模
m m
的情況下互為逆元。 記b
=a−1
' role="presentation">b=a
−1b=
a−1,所以
b b
又叫a' role="presentation">a
a的數論倒數。
需要用到費馬小定理:若
p p
為質數(顯然
a' role="presentation">aa與
p p
互質),則ap
−1≡1
(mod p)
' role="presentation">ap−
1≡1(
modp
)ap−
1≡1(
modp
),所以ap
−2a p−
2就是
a a
在模p' role="presentation">p
p的情況下的乙個逆元,由模乘法的分配率得ap
−2%m
a p−
2%m也是
a a
的乙個逆元,用快速冪求得即可(一般題目中的模數都是質數)。設c
=b−1
' role="presentation">c=b
−1c=
b−1,則
bc%m
=1b c%
m=1(
m m
不可能為
1' role="presentation">1
1),所以有:ab
%m=a
b∗1%
m=ab
×bc%
m=ac
%m=a
⋅b−1
%ma b%
m=ab
∗1%m
=ab×
bc%m
=ac%
m=a·
b−1%
m求出b b
的逆元就能處理模運算中的除法了。
atcoder - 1974·いろはちゃんとマス目 / iroha and a grid
數論 逆元 O(n)求逆元
傳送門 這是乙個學長的部落格,但是看了好幾遍都沒記住,所以決定自己寫一下。所謂o n 求逆元就是遞推,下面是證明 inv i mod mod i inv mod i 證明 設 t mod i,k mod i 則 t i k 0 mod mod 移項得到 t i k mod mod 兩邊同除i k,即...
逆元以及線性逆元求法
對於乙個數a,如果a a 1 1 modp 那麼a 1是a對於p的逆元 在除法中,除以乙個數等於乘上這個數的逆元,即x y x y 1 modp 求單個逆元可以用費爾馬小定理 對於質數p,a p 1 1 modp 那麼a p 2 a a p 1 1 modp 所以a 1 a p 2 用快速冪求即可 ...
乘法逆元及逆元求法
模運算 取餘運算,即a除以b得到的餘數,記為mod,又記為 模運算過程中,加減乘都可以先對a,b進行 p,然後再進行加減乘,最後再 p,結果不變 運算子優先順序,模運算和乘除法的運算子優先順序是一樣的 同餘 a和b除以p得到的餘數相同,即p可以整除 a b 求解 cfrac mod p 的值,因為除...