题目
题解
代码
import java.util.Scanner;
public class code50 {
// public static double myPow(double x, int n) {
// if (x == -1) {
// if (n % 2 != 0) {
// return -1;
// } else {
// return 1;
// }
// }
// if (x == 1.0) {
// return 1;
// }
// if (n == -2147483648) {
// return 0;
// }
// if (n == 2147483647) {
// return 0;
// }
// long N = n;
// if (N < 0) {
// x = 1 / x;
// N = -N;
// }
// double ans = 1;
// for (long i = 1; i <= N; i++) {
// ans = ans * x;
// }
// return ans;
// }
public static double myPow(double x, int n) {
if (n == 0) {
return 1;
}
if (n == 1) {
return x;
}
// if (x == 1) {
// return 1;
// }
// if (x == -1) {
// if (n % 2 != 0) {
// return -1;
// } else {
// return 1;
// }
// }
// if (n == -2147483648) {
// return 0;
// }
// if (n == 2147483647) {
// return 0;
// }
if (n < 0) {
double result = myPow(x, -(n / 2));
if (n % 2 == 0) {
return 1 / (result * result);
} else {
return 1 / (result * result * x);
}
} else {
double result = myPow(x, n / 2);
if (n % 2 == 0) {
return result * result;
} else {
return result * result * x;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
double x = sc.nextDouble();
int n = sc.nextInt();
double res = myPow(x, n);
System.out.printf("%.5f", res);
}
}
}