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

2021-10-11 09:17:12 字數 823 閱讀 1694

基本思想

『』』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(內含位運算)

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

(mod

m)

b^(mod m)

b−1(mo

dm)。

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

2b^

bm−2

即為b的乘法逆元。

#include

using

namespace std;

typedef

long

long ll;

ll qmi

(ll b, ll m, ll p)

return res;

}int

main()

return0;

}

快速冪求逆元

概念 得到 給定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 ...

快速冪及求逆元

求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...