数的三次方根

题意


给定一个浮点数n,求它的三次方根。

输入格式

共一行,包含一个浮点数n。

输出格式

共一行,包含一个浮点数,表示问题的解。

注意,结果保留6位小数。

数据范围

−10000≤n≤10000

输入样例:

1000.00

输出样例:

10.000000

分析


因为\(x\)的取值范围可以是负数,负数的三次方根还是负数,为了方便处理。可以先对\(x\)取绝对值。

接下来这个问题,可以很方便的通过浮点数二分而解决,属于浮点数二分的板子题了。

代码


#include<iostream>
using namespace std;

int main()
{
    double x;scanf("%lf",&x);
    int sign=x>=0?1:-1;
    x=abs(x);
    double l=0,r=1e9;
    while(r-l>1e-8)
    {
        double mid=(l+r)/2;
        if(mid*mid*mid<=x)l=mid;
        else r=mid;
    }
    printf("%.6lf\n",r*sign);
    return 0;
}
posted @ 2021-03-12 13:36  冰糖ryj  阅读(279)  评论(0编辑  收藏  举报