1. 程式人生 > 其它 >790. 數的三次方根

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() {
    double x;
    cin >> x;
    double l = -10000; //這個邊界有意思,注意左右邊界
    double 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;
}