题目特征描述
(1)实数二分
解题思路
(1)数据类型是double,而不是int;用printf(“%m.nlf”,l) 的形式,更方便获取有效数字
(2)实数二分,数据连续,只需令r = mid 或 l = mid 即可;
(3)保留6位小数,即小数点后的第六位是完全一致的,误差值$<10^{-6}$;误差值越小越好,$<10^{-7}$其实就够用了,取到$<10^{-8}$也行;
算法1
时间复杂度 $O(log_2n)$
C++ 代码
#include<iostream>
using namespace std;
double n;
int main()
{
cin>>n;
//开始二分
double l = -100, r = 100;
while(r - l > 1e-7)
{
double mid = (l + r) / 2;
if(mid*mid*mid >= n) r = mid;
else l = mid ;
}
printf("%.6lf\n",l);
return 0;
}