class Solution { public double myPow(double x, int n) { if (x == 0.0) { return x; } double sign = n > 0 ? 1.0 : -1.0; long nn = Math.abs(Long.valueOf(n)); double result = 1.0; while (nn > 0) { if (nn % 2 == 1) { result *= x; } x *= x; nn /= 2; } return sign > 0 ? result : 1.0 / result; } }