当一个数的幂很高时,需要更快的方式去求值。这里给出一个快速幂的模板。
第一个参数是底数,第二个参数是幂,第三个参数是要对齐取模的数。
template<typename T, typename U>
inline T qpow(T a, U b, int p)
{
T res = 1;
while(b){
if(b & 1) res = res * a % p;
a = a * a % p;
b >>= 1;
}
return res;
}
当一个数的幂很高时,需要更快的方式去求值。这里给出一个快速幂的模板。
第一个参数是底数,第二个参数是幂,第三个参数是要对齐取模的数。
template<typename T, typename U>
inline T qpow(T a, U b, int p)
{
T res = 1;
while(b){
if(b & 1) res = res * a % p;
a = a * a % p;
b >>= 1;
}
return res;
}