給定 nn 組 ai,pi其中 pi是質數,求 ai 模 pi 的乘法逆元,若逆元不存在則輸出輸入格式impossible
。注意:請返回在 0∼p−1 之間的逆元。
乘法逆元的定義若整數 b,mb,m 互質,並且對於任意的整數 aa,如果滿足 b|ab|a,則存在乙個整數 xx,使得 a/b≡a×x(modm)a/b≡a×x(modm),則稱 xx 為 bb 的模 mm 乘法逆元,記為 b−1(modm)b−1(modm)。
bb 存在乘法逆元的充要條件是 bb 與模數 mm 互質。當模數 mm 為質數時,bm−2bm−2 即為 bb 的乘法逆元。
第一行包含整數 n。
接下來 n 行,每行包含乙個陣列 ai,pi資料保證 pipi 是質數。
輸出格式
輸出共 n 行,每組資料輸出乙個結果,每個結果佔一行。
若 ai 模 pi的乘法逆元存在,則輸出乙個整數,表示逆元,否則輸出impossible
。
資料範圍
1≤n≤105
1≤ai,pi≤2∗109
輸入樣例:
3
4 38 5
6 3
輸出樣例:1
2impossible
分析
若整數b
,m
互質,並且對於任意的整數a
,如果滿足b|a
,則存在乙個整數x
,使得a / b ≡ a * x (% m)
,則稱x
為b
的模m
乘法逆元,記為 \(b^(\% m)\)
根據費馬小定理:\(b^ ≡ 1 (\% m)\),
所以有\(b*b^ ≡ 1 (\% m)\)
又因為b存在乘法逆元的充要條件為b,m互質,所以當m為質數的時候,b的逆元就是\(b^\%m\)
**
#include#include#includeusing namespace std;
typedef long long ll;
ll ksm(int a, int b, int p)
return res;
}int main()
return 0;
}
時間複雜度
參考文章
快速冪求逆元
概念 得到 給定nn組ai,piai,pi,其中pipi是質數,求aiai模pipi的乘法逆元,若逆元不存在則輸出impossible。注意 請返回在0 p 10 p 1之間的逆元。乘法逆元的定義 若整數b,mb,m互質,並且對於任意的整數 aa,如果滿足b ab a,則存在乙個整數xx,使得a b...
快速冪求逆元
費馬小定理 在模為 素數 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 內含位運...