当前位置 : 主页 > 编程语言 > c语言 >

浮点数二分模板

来源:互联网 收集:自由互联 发布时间:2023-08-28
题目 给定一个浮点数 $n$,求它的三次方根。 输入格式共一行,包含一个浮点数 $n$。 输出格式共一行,包含一个浮点数,表示问题的解。 注意,结果保留 $6$ 位小数。 数据范围$−10

JWvFczgRNg.jpg

题目

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

输入格式 共一行,包含一个浮点数 $n$。

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

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

数据范围 $−10000≤n≤10000$ 输入样例: $1000.00$ 输出样例: $10.000000$

思路

浮点数二分可以直接分, 无需考虑边界情况 模板为:

while (r - l > 1e-保留小数位数 * 1e-2)
{
    double mid = (l + r) / 2;
    if (k <= mid * mid * mid) r = mid;
    else l = mid;  // 这里不能±1了, 会使得结果不准确
}

代码

#include <iostream>

using namespace std;

double n;

int main()
{
    scanf("%lf", &n);
    double l, r;
    l = -1000, r = 1000;
    while (r - l > 1e-8)
    {
        double mid = (l + r) / 2;
        if (n <= mid * mid * mid) r = mid;
        else l = mid;
    }
    printf("%.6lf", l);
    
    return 0;
}
上一篇:算法练习-day17
下一篇:没有了
网友评论