前言
只是记录
这道题是二分查找
题目
模板
/*检查x是否满足某种性质*/
bool check(double x){/*...*/}
double bsearch_3(double l,double r)
{
const double eps=1e-6;//eps表示精度,取决于题目对精度的要求
while(r-l>eps)
{
double mid=(l+r)/2;
if(check(mid))
r=mid;
else
l=mid;
}
return l;
}
代码
- 一个比较有意思的解法
#include<bits/stdc++.h>
using namespace std;
int main()
{
double n;
cin>>n;
printf("%.6lf",cbrt(n));
return 0;
}
- y总模板解法
#include<bits/stdc++.h>
using namespace std;
int main()
{
double n;
cin>>n;
double l=-10010,r=10010;
const double eps=1e-7;
while(r-l>=eps)
{
double mid=(l+r)/2;
if(mid*mid*mid>=n)
r=mid;
else
l=mid;
}
printf("%.6lf",l);
return 0;
}