hdu 2199 Can you solve this equation?

来源:互联网 发布:adobe for mac 编辑:程序博客网 时间:2024/05/01 14:09

Problem Description

Now,given the equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,can you find its solution between 0 and 100;
Now please try your lucky.

Input

The first line of the input contains an integer T(1<=T<=100) which means the number of test cases. Then T lines follow, each line has a real number Y (fabs(Y) <= 1e10);

Output

For each test case, you should just output one real number(accurate up to 4 decimal places),which is the solution of the equation,or “No solution!”,if there is no solution for the equation between 0 and 100.

Sample Input

2100-4

Sample Output

1.6152No solution!

 

 

简单的二分  一直不明白为啥%.4lf 就wa     %.4f就ac  好坑啊~

#include<stdio.h>  #include<math.h>  double f(double x)  {      return (8*x*x*x*x + 7*x*x*x + 2*x*x + 3*x + 6);  }  int main()  {      int ncase,i,j,k;      double m,n;      scanf("%d",&ncase);      while(ncase--)      {          scanf("%lf",&m);          if(f(0)>m||f(100)<m)          {              printf("No solution!\n");              continue;          }          double l,r;          l=0.0;          r=100.0;          double mid=50.0;         while(fabs(f(mid)-m)>1e-5)         {             if((f(mid)>m))               {                 r=mid;                 mid=(l+r)/2;                  }                else              {                 l=mid;                  mid=(l+r)/2;                               }          }          printf("%.4f\n",mid);     }      return 0;  }  


 

0 0