快速幂模板
快速幂
快速幂算法能帮我们算出指数非常大的幂,传统的求幂算法在指数n非常大的时候,时间复杂度会非常高。
快速幂算法的核心思想就是每一步都把指数分成两半,二相应的底数做平方运算。这样指数会不断变小,从而所需要执行的循环次数也变小。
模板
typedef long long LL;
int qmi(int a, int b, int p) { // a为底数,b为指数,p为模值
int res = 1 % p; // p=1时,任何数模1都为0
while (b) {
if (b & 1) res = (LL)res * a % p;
b >>= 1;
a = (LL)a * a % p;
}
return res;
}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!