1、二分查找,水题。
2、在0和100中二分找到0点(r-l范围在1e-6间视为0)
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
double func(double x) { //数值
return 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6;
}
void binarySearch(double n) { //二分查找
double l=0,r=100; //区间[0,100]
if(n<func(0) || n>func(100.0)) {
cout<<"No solution!"<<endl;
}else{
while(r-l>1e-6) {
double mid=(l+r)/2;
if(func(mid)>n) r=mid;
else l=mid;
}
printf("%.4f\n",r);
}
}
int main()
{
int t;
double num;
cin>>t;
while(t--) {
cin>>num;
binarySearch(num);
}
return 0;
}