题目描述
给定一个浮点数 n,求它的三次方根。
输入格式
共一行,包含一个浮点数 n。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留 6 位小数。
数据范围
−10000≤n≤10000
样例
输入样例:
1000.00
输出样例:
10.000000
算法
浮点数二分法
C代码
#include<stdio.h>
int main(){
double x,mid;
double l,r;
scanf("%lf",&x);
l=(x<-1)*x-(x>-1&&x<1); //因为(-1,1)区间内的数开三次方根结果的绝对值比本身更大,需要分类讨论
r=(x> 1)*x+(x>-1&&x<1); //逻辑运算结果作为系数,相当于if-else赋不同值
while(r-l>1e-8){
mid=(l+r)/2;
if(mid*mid*mid>=x) r=mid;
else l=mid;
}
printf("%.6lf",l);
return 0;
}