实数二分 acwing790

#include<iostream>

using namespace std;

double x;

double bsearch_3(double l,double r)//l和r是由题意估算的两个值,所求的值在l和r之间就行
{
    
    
	const double eps=1e-8;//题目要求保留6位但是需要,精确到8位才能保证正确 
	while(r-l>eps)
	{
    
    
		double mid=(l+r)/2;//移位操作只适用于整数 //注意mid是double形式
		if(mid*mid*mid>=x) r=mid;//实数二分不用准确的边界值要求
		else l=mid;
	 } 
	 return l; 
}

int main()
{
    
    
	cin>>x;
	double l=-100,r=100;
	 l=bsearch_3(l,r);
	printf("%.6lf\n",l);
	return 0;
}
double bsearch_3(double l,double r)
{
    
    
	const double eps=1e-8;
	while(r-l>eps)
	{
    
    
		double mid=(l+r)/2;
		if(mid*mid*mid>=x) r=mid;
		else l=mid;
	 } 
	 return l; 
}

猜你喜欢

转载自blog.csdn.net/qq_47874905/article/details/109427284