题解 | 求解立方根

#牛客创作赏金赛# #刷题我是认真的#

解题思路:

  1. 二分查找
  2. 有两个注意点:
  3. 正数和负数
  4. 在0~1,-1~0的区间内,两数相乘,其值越来越小
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    // 需要分情况考虑:
    // 1. 正数  -> 分两种:0<x<1 x>1
    // 2. 负数  -> 同样分两种: -1<x<0  x<-1
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        double num = in.nextDouble();
        // 主要针对0<x<1的情况,在这个区间,相乘是不断变小的,其值范围是在0~1之间,最大值取0~1即可
        double l = num > 0 ? 0 : (num < -1 ? num : -1);
        double h = num > 0 ? (num > 1 ? num : 1) : 0;
        double delta = 0.01;
        while (h * h * h - num > delta) {
            double mid = (h + l) / 2;
            if (mid * mid * mid < num) {
                l = mid;
            } else if (mid * mid * mid > num) {
                h = mid;
            }
        }
        System.out.println(String.format("%.1f", h));
    }
}

全部评论

相关推荐

10-15 10:23
门头沟学院 Java
牛可乐的头像真牛:赶紧举报,这公司绝对是诈骗的,等你签约后工作一两个月后根据合同漏洞把你开除,并且要求你赔偿3w培训费,996是为了提前筛选心甘情愿签下合同容易受骗的群体,纯粹面向校招生精心设计的骗局
你见过哪些工贼行为
点赞 评论 收藏
分享
11-14 16:15
已编辑
湖南工业大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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