题目描述
给定一个浮点数 n,求它的三次方根。
输入格式
共一行,包含一个浮点数 n。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留 6 位小数。
数据范围
−10000≤n≤10000
输入样例:
1000.00
输出样例:
10.000000
算法
POW函数+fabs函数/浮点数二分
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int main(){
// 1.利用pow函数和fabs函数求解
// double a;
// scanf("%lf",&a);
// if(a<0){
// printf("%lf",-pow(fabs(a),1/3.0));
// }
// else
// printf("%lf",pow(a,1/3.0));
//2.利用二分求解,看y总的思路
double n;
scanf("%lf",&n);
double l=-10000,r=10000;
while(r-l>1e-8){
double middle=(l+r)/2;
if(middle*middle*middle>=n) r=middle;
else l=middle;//不用取middle+1,整数二分是由于当前值不符合则可能在middle下一个和r中间,
//而浮点二分当前值不满足,但是有可能在当前值与下一个值的区间里面
}
printf("%lf",r);
return 0;
}