题解 | #求解立方根#

求解立方根

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

import java.util.Scanner;
import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        double input = in.nextDouble();
        //答案的范围(-3,3)
        double left = -3D;
        double right = 3D;
        double mid = 0D;

        while (right - left > 0.1D) {
            mid = (left + right) / 2D;
            if (mid * mid * mid > input) {
                right = mid;
            } else {
                left = mid;
            }
        }
        BigDecimal bigDecimalL = new BigDecimal(left);
        left = bigDecimalL.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
        BigDecimal bigDecimalR = new BigDecimal(right);
        right = bigDecimalR.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
        if (input - left * left * left > right * right * right - input) {
            System.out.println(right);
        } else {
            System.out.println(left);
        }
    }
}

解题思路:

1, 设定初始平方根的范围是-3到+3;

2, 利用二分法, 不断缩小最终目标的范围;

3, 当结果左右边界差小于0.1时, 对结果边界进行小数尾数处理, 得到最终两个数字, 比较输出较为合适的结果

全部评论

相关推荐

七牛云头号黑子:人家是过度包装被看出来没过简历,你是包都不包啊兄弟
点赞 评论 收藏
分享
01-19 15:14
已编辑
延安大学 C++
累死的一条狗:我说白了这种玩意你直接点举报就完事了在给他挂出来
找工作以来,你最看不惯_...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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