##逆元
乘法逆元:
有 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 ...