快速幂
快速幂
基本思路
x的n次方可以将n转化为二进制数,x的11次方就是x的(1+2+8)次方,
代码实现
求\(X^N\)%mod
long long ksm(long long X,long long N,long long mod){
long long sum=1;
while(N){
if(N&1)
sum=sum*X%mod;
X=X*X%mod;
N/=2;
}
return sum;
}
相当于求N的二进制数
逆元
含义
逆元的含义:模n意义下,1个数a如果有逆元x,那么除以a相当于乘以x。
用途
当我们要求(a/b) mod p的值,且a很大,大到会溢出;或者说b很大,达到会爆精度。无法直接求得a/b的值时,我们就要用到乘法逆元。
a/b取模等于a*k取模那么k就等于b的mod-2次方
long long ksm(long long X,long long N,long long mod){
long long sum=1;
N=mod-2;
while(N){
if(N&1)
sum=sum*X%mod;
X=X*X%mod;
N/=2;
}
return sum;
}

浙公网安备 33010602011771号