题解 | #求解立方根#

求解立方根

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

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    let num;
    while ((line = await readline())) {
        num = +line;
    }
    let left;
    let right;
    let result;
    let half;
    const t=0.01;
    if (num == 1) {
        result = 1;
    } else if (num == -1) {
        result = -1;
    } else if (num == 0) {
        result = 0;
    } else if (num > -1 && num < 1) {
        if (num > 0) {
            left = 0;
            right = 1;
            half = (left + right) / 2;
            // console.log(half)
            while (Math.abs(half ** 3 - num) > t) {
                if (half ** 3 < num) {
                    left = half;
                    half = (left + right) / 2;
                } else {
                    right = half;
                    half = (left + right) / 2;
                }
            }
            result = half;
        } else {
            left = -1;
            right = 0;
            half = (left + right) / 2;
            while (Math.abs(half ** 3 - num) > t) {
                if (half ** 3 < num) {
                    left = half;
                    half = (left + right) / 2;
                } else {
                    right = half;
                    half = (left + right) / 2;
                }
            }
            result = half;
        }
    } else if (num > 1 || num < -1) {
        if (num > 1) {
            left = 1;
            right = num;
            half = (left + right) / 2;
            while (Math.abs(half ** 3 - num) > t) {
                if (half ** 3 < num) {
                    left = half;
                    half = (left + right) / 2;
                } else {
                    right = half;
                    half = (left + right) / 2;
                }
            }
            result = half;
        } else {
            left = num;
            right = -1;
            half = (left + right) / 2;
            while (Math.abs(half ** 3 - num) > t) {
                if (half ** 3 < num) {
                    left = half;
                    half = (left + right) / 2;
                } else {
                    right = half;
                    half = (left + right) / 2;
                }
            }
            result = half;
        }
    }
    console.log(result.toFixed(1));
})();

全部评论

相关推荐

湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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