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