逆元以及線性逆元求法

2021-08-03 07:32:42 字數 683 閱讀 8351

對於乙個數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),用快速冪求即可

但對於一堆數,例如1~n一一求逆元,用快速冪是o(nlogn)的,若n達到1e7會**,所以需要線性求逆元的方法

假設當前要求數i的逆元,且1~i-1的逆元都已經求好了,設模數p為質數

p可以表示為p=k*i+r的形式,其中k相當於除數,i相當於商,r相當於餘數

那麼k*i+r=0(modp)這是顯然的

模等式兩邊同時乘以i^-1*r^-1,因為i*i^-1=1(modp),所以等式變成了k*r^-1+i^-1=0(modp)

移項,得i^-1=-k*r^-1

這其中,k是除數(下取整),相當於p/i,r是餘數,相當於p%i

p%i一定小於i,而因為p是質數,所以p%i!=0

1~i-1的所有數的逆元我們都是知道的,以inv表示

那麼我們就有了inv[i]的遞推式:inv[i]=-(p/i)*inv[p%i]=p-((p/i)*inv[p%i])%p

其中,1^-1=1

於是我們就有了線性的逆元求法

乘法逆元及逆元求法

模運算 取餘運算,即a除以b得到的餘數,記為mod,又記為 模運算過程中,加減乘都可以先對a,b進行 p,然後再進行加減乘,最後再 p,結果不變 運算子優先順序,模運算和乘除法的運算子優先順序是一樣的 同餘 a和b除以p得到的餘數相同,即p可以整除 a b 求解 cfrac mod p 的值,因為除...

乘法逆元求法

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

線性求逆元

在某些組合數的計數問題中,經常會用到逆元,這裡我們講一下如何線性求出1到n在模p意義下的逆元,注意p為質數。假設我們當前要求a在模p意義下的逆元。令p ak r,0 rp a k r,0 r 那麼 ak r 0 modp a k r 0 modp 然後恒等式變形,兩邊同時乘a 1 r 1 a 1 r...