题解 | #求解立方根#
求解立方根
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));
})();