逆元淺析

單獨的考逆元,現在已經不多了
但是掌握很有必要

逆元是什麼

當題目中最終答案太大時,往往會要求我們模一個數。這樣的題往往是dp 、遞推之類。所以我們要步步取模。但如果某一步中出現了除法,或者一道概率dp 要求答案取模,這時就要涉及到模意義下的除法。
例如:a/b%m.這時我們將式子變形得到 a×1bmodm 這樣就得到了一個乘法。
設c是逆元,得b1c(modm)
b×c1(modm)

怎麼求單個的逆元

顯然可以用exgcd 解這個方程。
b×c+m×k=1
求得最小的一個c 即可。
還有,注意到了這個方程是不一定有解的,意思就是說不一定有逆元。但注意到m 爲質數一定有解。這爲接下來的線性求逆元提了個醒:只有質數才能線性求逆元。
另外一種做法,是使用歐拉定理。
有歐拉定理有:

aϕ(p)1

所以逆元可求爲bϕ(m)1
注意到這個不能判斷是否有逆元,使用時要注意。然後具體操作時,只需打一個快速冪就可以了。(一般模的是質數,所以ϕ(p)=p1 );

怎麼線性求逆元

逆元有一種線性求法,就是在O(n) 內求1~n的逆元。
具體推理與操作過程如下;

p=k×i+r

p0(modp)

k×i+r0(modp)

爲了強行構造逆元,我們同乘i1×r1
k×r1+i10(modp)

i1k×r1(modp)

i1[pi]×(pmodi)1(modp)

實際操作中仍有以下兩點需要注意
  1. 注意到右邊是一個負數,實際中要加p再去模。
  2. 注意到這裏只能求比p小的逆元,實際上比p大的模一個p就可以了。

代碼

會後續補充…….

發佈了47 篇原創文章 · 獲贊 3 · 訪問量 7088
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章