doublemyPow(double x, int n) { if (n == 0) return1; long N = n; double res = 1; if (N < 0) { x = 1 / x; N *= -1; } while (N) { if (N & 1) // 判断二进制最地位是否为1,或者判断是否为偶数,等价于 N%2 res *= x;
classSolution { public: doublequickMul(double x, longlong n) { if (n == 0) return1; double y = pow(x, n / 2); return (n % 2 == 0) ? y * y : y * y * x; } doublemyPow(double x, int n) { long N = n; if (N < 0) { x = 1.0 / x; N *= -1; } returnquickMul(x, N); } };
classSolution { public: doublemyPow(double x, int n) { if (n == 0) return1; long N = n; double res = 1; if (N < 0) { x = 1 / x; N *= -1; } while (N) { if (N & 1) // 判断二进制最地位是否为1,或者判断是否为偶数,等价于 N%2 res *= x;