AcWing||790. 数的三次方根
活动地址:https://www.acwing.com/activity/content/19/
考察要点:二分
题目要求
题目地址:https://www.acwing.com/problem/content/792/
思路 :题目给出数据范围为 [-10000,10000],所以直接使用二分查找,试出一个 mid 的三次方接近 x 的的数,最后得出的区间,l 与 r 相差 10的负8次方,可以认为 mid = l = r,即为 x 的三次方根。
代码
#include <iostream>
#include <cstring>
#include <algorithm>
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; //mid 大了,取左区间
else l = mid; //取右区间
}
printf("%.6f\n",l);
return 0;
}
题目链接:790. 数的三次方根