题解 | #求解立方根#

求解立方根

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

    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务