AcWing 790. 数的三次方根

题目传送门

一、理解与感悟

浮点数二分还是很简单的,最开始使劲设置最大和最小,精度一般设为\(1e-8\),然后根据条件写\(check()\),发现符合就向左或向右逼近,直到结果的差,精度在可以接受的范围内,完事。

二、C++代码

#include <bits/stdc++.h>

using namespace std;
const double eps = 1e-8;   // eps表示精度,取决于题目对精度的要求,6位小数,就是1e-8,5位就是1e-7

//三次方根:浮点数的二分,说白了就是个试,找到了算,但不是傻找,而是一半一半找。
int main() {
    //优化输入
    ios::sync_with_stdio(false);
    double x;
    cin >> x;
    //−10000≤n≤10000
    double l = -10000, r = 10000;
    //浮点数二分模板
    while (r - l > eps) {
        //中值
        double mid = (l + r) / 2;
        //检查函数
        if (mid * mid * mid >= x) r = mid; //向左逼近
        else l = mid;//向右逼近
    }
    printf("%.6lf\n", l); //默认保留6位小数
    return 0;
}
原文地址:https://www.cnblogs.com/littlehb/p/15234625.html