题解 | #求解立方根#

求解立方根

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

import java.util.Scanner;
//二分查找
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) {
            double num = in.nextDouble();
            System.out.println(binarySearch(num));
        }
    }


    public static double binarySearch(double num) {
        int isMinus = num<0?-1:1;
        num = Math.abs(num);
        double left = 0, right = num<1?1:num;
        while (right-left>0.1) {
            double med = (left + right) / 2;
            double x = Math.pow(med, 3);
            if (x == num) {
                return isMinus*(double)Math.round(med*10)/10;
            }
            else if(x>num){
                right = med;
            }
            else if(x<num){
                left = med;
            }
            //System.out.println(med);
        }
        double x1 = Math.pow(left, 3), x2=Math.pow(right, 3);
        if(Math.abs(x1-num) < Math.abs(x2-num)){
            return isMinus*(double) Math.round(left*10)/10;
        }
        else{
            return isMinus*(double) Math.round(right*10)/10;
        }
    }
}

全部评论

相关推荐

11-06 16:50
门头沟学院 Java
用微笑面对困难:word打字比赛二等奖的我,也要来凑合凑合
点赞 评论 收藏
分享
一只乌鸦:这不才9月吗,26到明年毕业前能一直找啊,能拿下提前批,转正的,offer打牌的都是有两把刷子的,为什么非要跟他们比。如果别人是9本硕+金牌+好几段大厂实习呢?如果别人是双非通天代呢?如果别人是速通哥呢?,做好自己就行了,我们做不到他们一样提前杀死比赛,但晚点到终点也没啥关系吧
双非应该如何逆袭?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务