一、理解与感悟
浮点数二分还是很简单的,最开始使劲设置最大和最小,精度一般设为\(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;
}