题目描述
判断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;
}