题目描述
给定一个浮点数 n
,求它的三次方根。
输入格式
共一行,包含一个浮点数 n
。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留 6
位小数。
数据范围
−10000≤n≤10000
输入样例
1000.00
输出样例
10.000000
浮点数二分法,比一般的整型二分要简单,因为它在更新的时候不需要去 +1 或者 -1
其中的 r - l > 1e-7,这里的 1e-7 表示的是一个很小的阈值(即 0.0000001),它决定了二分查找算法何时停止迭代。
这里的 1e-7 表示的是一个很小的阈值(即 0.0000001),它决定了二分查找算法何时停止迭代。
当达到这个精度时,实际的立方根值与当前左边界 l 非常接近。
对于大多数数值计算问题,这种精度通常被认为是足够精确的近似解。
继续缩小搜索区间可能只会带来微乎其微的改进,而增加额外的计算成本。
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
double n;
scanf("%lf",&n);
double l = -100, r = 100;
while (r - l > 1e-7)
{
double mid = (l + r) /2;
if(mid*mid*mid >= n) r = mid ;
else l = mid ;
}
printf("%lf", l);
}