题目描述
给定一个浮点数 n,求它的三次方根。
输入格式
共一行,包含一个浮点数 n。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留 6位小数。
数据范围
−10000≤n≤10000
输入样例
1000.00
输出样例
10.000000
题目分析
数的取值范围在-100000~100000中,保留的小数点位数为后六位,可通过二分法来不断逼近该数,用精度限制作为查找结束条件。
参考文章:
AcWing 790. 数的三次方根
算法实现
#include <stdio.h>
int main(){
double n; scanf("%lf", &n);
double l = -1e4, r = 1e4;
// 查找的为六位,一般取再加两位的精度
while(r - l > 1e-8){
double mid = (l + r) / 2;
// n在mi的左边,则r = mid
if(mid * mid * mid >= n) r = mid;
// n在mid的右边,则l = mid
else l = mid;
}
printf("%lf", l);
return 0;
}
算法模板:
39、【查找】二分查找:数的范围(C版)