快速幂复杂度只有logn,比一般的n的算法要好得多,其实质就是枚举二进制位。
1 typedef long long ll; 2 3 ll quick_pow(ll a, ll b, ll p) { 4 ll ans = 1, x = a % p; 5 while (b) { 6 if (b & 1) 7 ans = ans * x % p; 8 x = x * x % p, b >>= 1; 9 } //按二进制位处理b 10 return ans % p; //避免p为1且b为0 11 }