【每日算法】基础算法——浮点数二分查找[数的三次方根](六)

题目内容

给定一个浮点数n,求它的三次方根。

输入格式

共一行,包含一个浮点数n。

输出格式

共一行,包含一个浮点数,表示问题的解。
注意,结果保留6位小数。

数据范围

−10000≤n≤10000

输入样例

1000.00

输出样例

10.000000

题解

首先,浮点数的二分和整数二分很类似,核心也是针对区间的判断以及求分界点。
思考如下:
1、定义mid = (l+r)/2,区间范围是[l,r]。
2、思考mid^3和x的大小关系,若mid^3大,则说明x^(1/3)的值在左边,即区间更新应该是[l,mid];若mid^3小,则说明x^(1/3)的值在右边,即区间更新应该是[mid,r]。
3、重复以上步骤,直到求出答案

代码

#include <iostream>

using namespace std;

int main(){
double x;
cin >> x;

double l = -10000, r = 10000;

while (r - l > 1e-8){
double mid = (l + r) / 2;
if (mid * mid *mid >= x) r= mid;
else l = mid;
}
printf("%lf\n", l);

return 0;
}

原题链接

Author: Frederic Niu
Link: https://www.fredericniu.cn/2020/11/18/【每日算法】基础算法——浮点数二分查找-数的三次方根-(六)/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
我的公众号