解方程(二分答案)

题目描述
判断y = 8 * x ^ 4 + 7 * x ^ 3 + 2 * x ^ 2 + 3 * x + 6 的解是否在0到100之间(包括0, 100)。

输入格式
输入一个实数y(fabs(y)<= 1e10)。

输出格式
输出一个实数(精确到小数点后4位),它是等式的解,如果在在0到100之间没有解,则为“No solution!”。

样例输入
100

样例输出
1.6152

#include<iostream>
#include<cmath>
using namespace std;
double check(double x){
    
    
	double res=8.0*pow(x,4)+7.0*pow(x,3)+2.0*pow(x,2)+3*x+6;
	return res;
}
int main(){
    
    
	double y,l=0,r=100,ans=101;
	cin>>y;
	if(!(y>=check(0)&&y<=check(100)))	cout<<"No solution!";
	else{
    
    
		while(fabs(l-r)>=1e-9){
    
    
			double mid=(l+r)/2;
			if(check(mid)>=y){
    
    
				ans=mid;
				r=mid;
			}	
			else	l=mid;
		}
	printf("%.4f",ans);
	}		
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_51794965/article/details/110836413