一道二分
思路 根据它的二阶导数发现他的一阶导数是单调递增的,而一阶导数从0开始就大于0
然后就开始二分查找
关于二分和其他二分的题目可以看我其他的博客
#include <stdio.h>
double y; //全局变量
double f(double x){
return 8*x*x*x*x + 7*x*x*x + 2*x*x + 3*x + 6;
}
double solve(double left,double right)
{
double eps=1e-10;
double mid=(left+right)/2;
while(right-left>=eps)
{
if(y>f(mid))
left=mid;
else
right=mid;
mid=(left+right)/2;
}
return mid;
}
int main(){
int t;
int i;
scanf("%d",&t);
while(t--){
scanf("%lf",&y);
i=solve(0,100.0);
if(y>=f(100.0)||y<=f(0.0))
printf("No solution!\n");
else
printf("%.4lf\n",solve(0.0,100.0));
}
return 0;
}