求逆元的四種辦法

2022-09-18 00:06:15 字數 1045 閱讀 1011

2018-03-17 12:06:26

還有乙個半小時就開始天梯賽排位賽了 乙個小時 看看求逆元吧 在補zoj2018三月賽c題的時候遇到的 之前遇見數學題基本上都是選擇性略過的

感謝四種辦法 例如 a/b%p 總結一下求逆元的適用情況 (是否要求a、b互質  是否要求p為質數  資料多大的時候可以用)  時間複雜度

這裡不講原理 原理原部落格介紹的很詳細 只講應用

逆元存在的充分必要條件是a p互質

逆元的含義 在模n意義下 乙個數a如果有逆元x 那麼除以a相當於乘以x

一. 擴充套件歐幾里得

不要求p為質數

效率較高 常熟較小 時間複雜度ln n 

typedef  long long ll;  

void extgcd(ll a,ll b,ll& d,ll& x,ll& y)

else

} ll inverse(ll a,ll n)

二. 費馬小定理

時間複雜度log2n 常數上比上一種辦法大 幾乎很少會用費馬小定理求逆元

typedef  long long ll;  

ll pow_mod(ll x, ll n, ll mod)

return res;

}

三. 求逆元的一般公式

上兩種辦法都要求a與p互質 

這種辦法不要求互不互質  但是當a與p互質的時候b*p可能會很大 因此就需要用前兩種辦法來解決  不互質的時候考慮這種辦法 效率較高

ans = (amodp*b)/b

四. 逆元打表

這種辦法適用於求乙個範圍內所有數字的逆元

有乙個遞推公式

typedef  long long ll;  

const int n = 1e5 + 5;

int inv[n];

void inverse(int n, int p)

}

之前對於分數取模也一直不理解 後面學習了這個發現 分數取模其實就是a*(b在p下的逆元)%p

求逆元的幾種辦法

補了一道cf題,順便看到有人求逆元的方法叼叼的,怪不得人家過題這麼快啊 來總結一發 求a關於n的逆元,即要解同餘方程ax 1 modn 的解x.ax 1 modn ax ny 1 僅當a與n互質時,存在 a 的逆元,利用擴充套件歐幾里得求解。這裡n不一定是素數 ll extend euclid ll...

防止死鎖的四種辦法

死鎖的防止方法 如果有死鎖形成,則4個必要條件一定同時成立,於是,只要採用的資源分配策略能使其中之一不成立,則就能防止死鎖的 發生。1 互斥條件 要使互斥使用資源的條件不成立,唯一的資源分配策略是允許程序共享資源。如 唯讀檔案 是一種很好的共享資源。要破壞 互斥使用資源 的條件經常是行不通的。如 印...

VLAN技術四種劃分辦法

vlan即虛擬區域網 virtual local area network的縮寫 是一種通過將區域網內的裝置邏輯地而不是物理地劃分成乙個個網段從而實現虛擬工作組技術。vlan是為解決乙太網的廣播問題和安 全性而提出的,它在乙太網幀的基礎上增加了vlan頭,用vlan id把使用者劃分為更小的工作組,...