快速幂
比用power()函数计算所用的时间复杂度低。
inline ll qpow(ll a , ll b , ll modd){ //快速幂 (位运算)
ll ans = 1 ;
while(b){
if(b & 1) ans = ans * a % modd ;
a = a * a % modd ;
b >>= 1 ;
}
return ans ;
}
费马小定理
计算组合数,其中p是所取模。
ll primeC(ll n, ll m, ll p) {
ll a = 1, b = 1;
if (m > n - m) m = n - m;
if (m < 0) return 0;
while (m) {
a = a * n % p;
b = b * m % p;
m--, n--;
}
return a * qpow(b, p - 2, p) % p; //(a/b)%p 等价于 a*(b,p)的逆元
}