# 数的三次方根 - 二分
#include <iostream>
using namespace std;
int main(){
double x;
cin >> x;
double l = -10000, r = 10000;
while(r - l > 1e-8){
double mid = (l + r) / 2;
if(mid * mid * mid >= x) r = mid;
else l = mid;
}
printf("%lf", l);
return 0;
}
#include <iostream>
using namespace std;
int main(){
double x;
cin >> x;
double l = -10000, r = 10000;
//保留六位 至少8位所以 左4 右4
while(r - l > 1e-8){
double mid = (l + r) / 2;
if(mid * mid * mid >= x) r = mid;
else l = mid;
}
printf("%lf", l);
return 0;
}
x 此代码使用二进制搜索算法来查找用户输入的数字的立方根。二进制搜索算法是通过将搜索空间重复分成两半来找到问题的近似解的常用方法。在这种情况下,搜索空间是 的立方根的可能值范围, x 定义为 -10000 到 10000 之间。
二分搜索算法的工作原理是首先设置搜索空间的左右边界(在本例中分别为 -10000 和 10000),然后通过将左右边界之间的中点设置为新边界来反复缩小搜索空间在左侧或右侧,取决于中点是大于还是小于 的立方根 x 。这一直持续到左右边界之间的差异小于某个阈值(在本例中为 1e-8)。
二进制搜索完成后,左边界将打印为 的立方根的近似解 x 。代码使用该 printf 函数打印结果,精确到小数点后六位。
在此代码中, mid 是一个变量,表示二分搜索算法中当前搜索空间的中点。搜索空间是 的立方根的可能值范围, x 定义 mid 为搜索空间左右边界之间的中点。在二分搜索的每次迭代中, 的值 mid 被更新为缩小搜索空间的新中点。然后使用的值 mid 来确定在二分搜索的下一次迭代中是否应该更新左边界或右边界。