乘法逆元及逆元求法

2022-07-10 12:57:10 字數 2676 閱讀 4071

模運算:取餘運算,即a除以b得到的餘數,記為mod,又記為%

模運算過程中,加減乘都可以先對a,b進行%p,然後再進行加減乘,最後再%p,結果不變

運算子優先順序,模運算和乘除法的運算子優先順序是一樣的

同餘:a和b除以p得到的餘數相同,即p可以整除(a-b)

求解\(\cfrac \mod p\)的值,因為除法不能直接對a,b先取模再進相除,所以這邊就引入了逆元

逆元,可以理解為是在mod p意義下b的倒數,下文中將b的逆元記錄為inv[b]

以下是逆元的定義

\(b \times inv[b] \equiv 1 \pmod p\)

1.第乙個性質

\(\cfrac \equiv a \times inv[b] \pmod p\)

證明如下

\(b \times inv[b] \equiv 1 \pmod p\)

\((b \times inv[b]-1)\bmod p=0\)

由模運算的乘法性質\(a \times b \bmod p=(a \bmod p) \times (b \bmod p)\bmod p\)

得到\(\cfrac\times(b \times inv[b]-1)\bmod p=0\)

\((a \times inv[b]- \cfrac)\bmod p=0\)

\(a \times inv[b] \equiv \cfrac \pmod p\)

2.唯一性

設b有兩個逆元c,d

則\(a*c \equiv a*d \pmod p\)

\((a*c-a*d)\pmod p=0\)

\(a(c-d) \mod p=0\)

\(a\% p \neq 0\)

由模運算的乘性質得到\(c=d\)

所以b的逆元唯一

3.可積性

\(inv[a] \times inv[b]=inv[a \times b]\)

證明\(a*b * inv[ab]\equiv \pmod p\)

又因為\(a*inv[a]\equiv 1\)

\(b*inv[b]\equiv 1\)

模運算乘性質易證可積性成立

4.週期性

求解\(\cfrac \mod p\)中b的逆元

一般預設b小於p,但是當b大於p的時候來求逆元,其實就是乙個週期性

即\(inv[k*p+r]=inv[r],0

證明因為同餘,滿足兩邊同乘以乙個數依舊成立

所以有以下

設\(\cfrac \equiv k_1 \pmod p\)

\(\cfrac \equiv k_2 \pmod p\)

則對於第二個式子,兩邊同時乘以\(tp+r\)有

\(n \equiv k_2r \pmod p\)

\(\cfrac \equiv k_2 \pmod p\)

同理\(\cfrac \equiv k_1 \pmod p\)

即\(k_1 \equiv k_2 \pmod p\)

設\(b=r,c=t*p+r\),則有

\(\cfrac \equiv \cfrac \pmod p\)

\(n*inv[b] \equiv n*inv[c] \pmod p\)

\(inv[b] \equiv inv[c] \pmod p\)

又因為\(0\le inv[b],inv[c]

所以\(inv[b]=inv[c]\)

費馬小定理和拓展歐幾里得這邊就不講了

這邊主要講線性求逆元

一下模的結果範圍為[0,r-1]

\(p=k*i+r\)

\(k*i+r \equiv 0 \pmod p\)

模運算乘性質有

式子兩邊同時乘以\(inv[i]*inv[r]\)有

\(k*inv[r]+inv[i] \equiv 0 \pmod p\)

\(inv[i] \equiv k*inv[r] \pmod p\)

\(inv[i] \equiv -\cfrac*inv[p \% i] \pmod p\)

其中p%i在[0,i-1]範圍內,即求i的時候p%i的逆元已經被求出

1.線性求逆元

原題見,洛谷p3811乘法逆元模版題

#includeusing namespace std;

typedef long long ll;

const int mx=20000999;

ll inv[mx];

void getinv(ll n,ll p)

}int main()

}

2.線性求單個逆元

#includeusing namespace std;

typedef long long ll;

const int mx=20000999;

ll inv[mx];

ll getinv(int x,int p)

int main()

乘法逆元求法

數論中的重要內容 注意 本文只討論模數為質數的情況,因為當模數為合數時,不一定所有數都有逆元 在 bmod p 的意義下,我們把 x 的乘法逆元寫作 x 乘法逆元有這樣一條性質 x times x equiv 1 bmod p 乘法逆元有什麼用呢?模意義下的除法運算!除法運算對於模運算來說並不是 封...

逆元以及線性逆元求法

對於乙個數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 p互質,那麼有ap a就是p的倍數,所以有ap a modp ap 1 1 modp 所以只要打乙個快速冪就ok了。code include using namespace std int n,p int power int x,int k return...