数的三次方根
题目
给定一个浮点数n,求它的三次方根。
输入格式
共一行,包含一个浮点数n。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留6位小数。
数据范围
− 10000 ≤ n ≤ 10000 −10000≤n≤10000 −10000≤n≤10000
输入样例
1000.00
输出样例
10.000000
题解
思路
- 浮点数二分法
注意
- 由于存在 n 小于 1 的情况,所以不能使 r 初值为 n
- 例如 n 为0.001,如果 r 初值取 n 即 0.001,那么二分法无法得到答案
#include <iostream>
#include <cmath>
using namespace std;
int main () {
double n, l, r, mid;
cin >> n;
l = -10000, r = 10000;
while (fabs(l - r) > 1e-7) {
mid = (l + r) / 2;
if (mid * mid * mid > n) r = mid;
else l = mid;
}
printf("%.6f", mid);
return 0;
}