题解 | #求解立方根#

求解立方根

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

import java.util.*;
import java.text.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            double m = in.nextDouble();
            if(m==0){
                System.out.println(0.0);
            }
            //思路:每次砍一半,求3次方的值是否与m相等
            //计算边界
            double l = 0, r = 0, mid = 0;
            DecimalFormat f=new DecimalFormat("0.0");
            if (m > 0) {
                if (m > 1) {
                    //根一定大于1且根一定小于m,{1,m}
                    l=1.0;
                    r=m;
                } else {
                    //根一定小于1且大于m,{m,1}
                    l=m;
                    r=1.0;
                }
            } else {
                //m: -1<m<0
                if (m > -1) {
                    //-0.2*(-0.2)*(-0.2)=0.008;
                    l=-1;
                    r=m;
                } else {
                    l=m;
                    r=-1;
                }
            }
            //二分:设置差值:0.01
            while(l+0.001<r){
                mid=(l+r)/2;
                double n=mid*mid*mid;
                if(f.format(n).equals(f.format(m))){
                    System.out.println(f.format(mid));
                    break;
                }else if(n>m){
                    r=mid;
                }else{
                    l=mid;
                }
            }
        }
    }
}

全部评论

相关推荐

05-23 19:02
吉林大学 Java
点赞 评论 收藏
分享
05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在提需求:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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