C 逆元詳解

2021-08-21 17:10:22 字數 1709 閱讀 4130

例題

通常情況下,模運算有加法、乘法,減法的分配率,即: (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 的值,因為除...