快速冪 逆元

2021-08-05 23:50:32 字數 1111 閱讀 5805

##逆元

乘法逆元:

有 a * x = 1 (mod c) 稱 x 為 a 與 c 的乘法逆元。

理論依據:(mod 對於加減乘除都可進行分配)

f / a mod c= ? (f mod c / a mod c = ?)

如果存在 ax = 1(mod c)

那麼兩邊同時乘起來,得到 fx = ?(mod c)

成立條件:

1 模方程 a*x= 1(mod c)存在解

2 a | f (f%a==0)

注 : 若a*x=1 (mod c) 則稱 a 關於模 c 的乘法逆元為 x.當 a 與c 互素時 , x 有唯一解。如果不互素則無解。如果 c 為素數,則從1 到 c-1 的任意數都與 c 互素, 即在 1 到c-1之間都恰好有乙個關於模 c 的逆元。

##快速冪

& 表示在二進位制中取位

typedef long long ll;

ll mul(ll n,ll s)

}

return res

}

##例題

3的冪的和

求:3^0 + 3^1 +…+ 3^(n) mod 1000000007

input

輸入乙個數n(0 <= n <= 10^9)

output

輸出:計算結果

sample input

3sample output

40分析:

30+31+32+…+3n=(3^(n+1)-1) / 2

f / 2 mod c = f * x mod c

2 * x =1(mod c)

x = (c+1)/2

#includeusing namespace std;

#define mod 1000000007

long long mul(long long a,long long n)

//cout<>n;

long long ans;

ans=(mul(3,n+1)-1)*((mod+1)/2)%mod;

cout<}

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

基本思想 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 內含位運...

快速冪求逆元

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