题解 | #求解立方根#

求解立方根

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

    }
}

全部评论

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务