費馬小定理
在模為**素數**p的情況下,有費馬小定理
a^(p-1)=1(mod p)
那麼a^(p-2)=a^-1(mod p)
也就是說a的逆元為a^(p-2)
而在模**不為素數**p的情況下,有尤拉定理
a^phi(m)=1(mod m) (a⊥m)
同理a^-1=a^(phi(m)-1)
因此逆元x便可以套用快速冪求得了x=a^(phi(m)-1)
但是似乎還有個問題?如何判斷a是否有逆元呢?
檢驗逆元的性質,看求出的冪值x與a相乘是否為1即可
ps:這種演算法複雜度為o(log2n)在幾次測試中,常數似乎較上種方法大
當p比較大的時候需要用快速冪求解
快速冪求逆元
概念 得到 給定nn組ai,piai,pi,其中pipi是質數,求aiai模pipi的乘法逆元,若逆元不存在則輸出impossible。注意 請返回在0 p 10 p 1之間的逆元。乘法逆元的定義 若整數b,mb,m互質,並且對於任意的整數 aa,如果滿足b ab a,則存在乙個整數xx,使得a b...
演算法 快速冪,快速冪求逆元
基本思想 3 11 11 1011 3 1 3 3 2 9 3 4 81 3 8 6561 3 11 3 9 6561 第一種 當資料範圍m,k,p 10 9 int qmi int m,int k,int p return res 值得一提 k 1 除以2向0取整 詳細可以看狀態壓縮dp 內含位運...
快速冪及求逆元
求a k p,1 a,k,p 10 9 include include using namespace std typedef long long ll ll qmi int a,int b,int p return res int main 如果用暴力的話,那麼就是o n 10 9,而快速冪則是l...