题目

50. Pow(x, n)

题解



代码

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);
        }
    }
}

参考

  1. Pow(x, n)——题解一
  2. 详细通俗的思路分析,多解法——题解二
  3. 把指数部分看做二进制数(Python 代码)——题解三
  4. java system.out.printf()的使用方法
  5. java保留两位小数5种方法
  6. Java中精确到(保留)小数点后几位的方法
  7. 用Scanner实现多次输入数据
  8. Java 基本数据类型