快速冪求逆元

2021-10-03 09:11:43 字數 1086 閱讀 4238

概念:

得到

給定nn組ai,piai,pi,其中pipi是質數,求aiai模pipi的乘法逆元,若逆元不存在則輸出impossible。

注意:請返回在0∼p−10∼p−1之間的逆元。

乘法逆元的定義

若整數b,mb,m互質,並且對於任意的整數 aa,如果滿足b|ab|a,則存在乙個整數xx,使得a/b≡a∗x(mod m)a/b≡a∗x(mod m),則稱xx為bb的模mm乘法逆元,記為b−1(mod m)b−1(mod m)。

bb存在乘法逆元的充要條件是bb與模數mm互質。當模數mm為質數時,bm−2bm−2即為b的乘法逆元。

輸入格式

第一行包含整數nn。

接下來nn行,每行包含乙個陣列ai,piai,pi,資料保證pipi是質數。

輸出格式

輸出共nn行,每組資料輸出乙個結果,每個結果佔一行。

若aiai模pipi的乘法逆元存在,則輸出乙個整數,表示逆元,否則輸出impossible。

資料範圍

1≤n≤1051≤n≤105,

1≤ai,pi≤2∗1091≤ai,pi≤2∗109

輸入樣例:

3

4 38 5

6 3

輸出樣例:

1

2impossible

#include #include using namespace std;

typedef long long ll;

//a^k % p

int qmi(int a, int k, int p)

return res;//返回res}

int main()

return 0;

}

快速冪求逆元

費馬小定理 在模為 素數 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 ...

演算法 快速冪,快速冪求逆元

基本思想 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...