题解 | #求解立方根#

求解立方根

https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
// 找规律。分为ads在0-1和abs 1-21两种情况处理
public class Main {
    public static void main(String[] args) {
        cube();

    }

    private static void cube() {
        Scanner in = new Scanner(System.in);
        double aDouble = in.nextDouble();

        if (aDouble != 0 && aDouble >= -21 && aDouble <= 21) {
            if (-1 == aDouble || 1 == aDouble) {
                System.out.println(aDouble);
            }
            double de_c = 0;
            double de = 0;
            double abs = Math.abs(aDouble);
            if ((0 < abs && abs < 1)) {
                for (double i = 0.10; i < 1; i = i + 0.10) {
                    double d = i * i * i;
                    double v = Math.abs(abs - d);
                    if (i == 0.1) {
                        de_c = v;
                        de = i;
                    } else if (de_c > v) {
                        de_c = v;
                        de = i;
                    }
                }
                String format = String.format("%.1f", de);

                if (aDouble > 0) {
                    System.out.println(format);
                } else {
                    System.out.println("-" + format);
                }
            } else {
                int intValue = 0;
                int intValueSmall = 0;
                boolean f = true;
                for (int i = 2; i <= 21; i++) {
                    int v = i * i * i;
                    if (v > abs && f) {
                        intValue = i;
                        intValueSmall = i - 1;
                        for (double a = intValueSmall; a < intValue; a = a + 0.1) {
                            double d = a * a * a;
                            double vx = Math.abs(abs - d);
                            if (a == intValueSmall) {
                                de_c = vx;
                                de = a;
                            } else if (de_c > vx) {
                                de_c = vx;
                                de = a;
                            }
                        }
                        f = false;
                    }
                }
                String format = String.format("%.1f", de);

                if (aDouble > 0) {
                    System.out.println(format);
                } else {
                    System.out.println("-" + format);
                }
            }
        }
        // 库函数
        //Math.cbrt(in.nextDouble());

    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务