HDU2199

一道二分

思路 根据它的二阶导数发现他的一阶导数是单调递增的,而一阶导数从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;
}


猜你喜欢

转载自blog.csdn.net/xxf_is_girl_gad/article/details/80640619