题目
给定一个浮点数 n,求它的三次方根。
输入格式
共一行,包含一个浮点数 n。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留 6 位小数。
数据范围
−10000≤n≤10000
输入样例:
1000.00
输出样例:
10.000000
分析
给定一个浮点数,求他的三次方根,我们可以用二分的方法进行求解,但是题目中给定数据课能负数,那我们就把它加上绝对值然后做上标记,精度作为循环的出口即可
代码部分
#include <bits/stdc++.h>
using namespace std;
int main (void)
{
double x;
cin>>x;
bool flag= x>0?1:0; //标记x 0负数
x=abs(x);
double l=0,r=x;
if(x<1) //这里说明x为0.?对应的值应该在0到1中来寻找
r=1;
while(r-l>1e-8)
{
double mid=(l+r)/2;
if(mid*mid*mid<x) l=mid;
else r=mid;
}
if(flag)
printf("%lf",l);
else
printf("%lf",-l);
return 0;
}