题解 | #求解立方根#
求解立方根
https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca
重点在于如何处理不同的输入值的问题:
(1)输入 double n ,其中 n: [-1,0];
(2)输入 double n,其中 n: [0,1];
(3)输入 double n,其中 n: [1,+];
(4)输入 double n,其中 n: [-,-1];
所以,需要首先根据不同的 n 值,来更新一下 立方根存在的区间:
left = min(-1.0,n);
right = max(1.0,n);
于是,如下代码:
right = max(1.0,n);
于是,如下代码:
#include<iostream> #include<cmath> using namespace std; const double erro = 1e-6; double n; void fun1(double n) { double mid, left, right; //根据 n值,更新立方根存在的区间!!! left = min(-1.0,n); right = max(1.0,n); //abs(right-left)>erro while (left<=right) { mid = (left + right) / 2; if (mid * mid * mid - n > erro) { right = mid; continue; } else if (n - mid * mid * mid > erro) { left = mid; continue; } else break; } printf("%.1f", mid); } int main() { cin >> n; fun1(n); return 0; }