题解 | #求解立方根#
求解立方根
https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca
#include <iostream> #include <cmath> using namespace std; int main() { double val; while (cin >> val) { // 注意 while 处理多个 case int flag = 1; if (val < 0) { flag = -1; val = -val; } double left = 0.0; // VAL 小于 1 的时候,val的立方根 大于val ,同时小于1 double right = max(1.0,val) ; while( fabs(left - right) > 1e-5) { double mid = (left + right) / 2.0; double mid3 = mid * mid * mid ; if ( fabs(mid3 - val ) == 1e-5) { std::cout << flag*mid << std::endl; break; } else if (mid3 - val > 1e-5) { right = mid; } else { left = mid; } } printf("%.1f",flag*left); return 0; } } // 64 位输出请用 printf("%lld")