求幂的4种方法总结
1.常规求幂
ll pow(int a, int n) { int s; for (s = 1; n >= 1; n--) s *= a; return s; }
2.二分求幂(一般)
ll pow(int a, int n) { int s, base; for (s = 1, base = n; n; n = n / 2) { if (n % 2) s *= a; a *= a; } return s; }
3.二分求幂(位操作,思路完全一样,速度应该比二分求幂的速度快一丢丢)
ll pow(int a, int n) { int s, base; for (s = 1, base = n; n; n >>= 1) { if (n & 1) s *= a; a *= a; } return s; }
4.快速求幂(比较难的一种)
ll pow(int a, int n) { if (n == 0) return 1; else { while (!(n & 1)) { n >>= 1; a *= a; } } int result = a; n >>= 1; while (n) { a *= a; if (n & 1) result *= a; n >>= 1; } return result; }