hdu 2199 Can you solve this equation?

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2199

题目大意:找到满足8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y的x值,注意精确度问题。

 1 #include <iostream>

 2 #include <cstdio>

 3 #include <cmath>

 4 

 5 using namespace std;

 6 

 7 

 8 double fun(double s)

 9 {

10     return 8*pow(s, 4.0) + 7*pow(s, 3.0) + 2*pow(s, 2.0) + 3*s + 6;

11 }

12 int main ()

13 {

14     int t,flag;

15     cin>>t;

16     while (t--)

17     {

18         flag=0;

19         double x,y,yy,r,l;

20         cin>>y;

21         if (fun(0)<=y&&fun(100)>=y)

22         {

23             r=0,l=100;

24             while (l-r>1e-6)

25             {

26                 //cout<<r<<endl;

27                 x=(r+l)/2;

28                 double yy=fun(x);

29                 //yy=8*x*x*x*x+7*x*x*x+2*x*x+3*x+6;

30                 //yy=8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6;

31                 if (yy>y)

32                     l=x+1e-7;

33                 else

34                     r=x+1e-7;

35 

36             }

37             printf ("%.4lf\n",(r+l)/2);

38             //break;

39             flag=1;

40         }

41         else

42             {printf ("No solution!\n");flag=1;}

43         if (yy==r&&flag==0)

44             printf ("%.4lf\n",y);

45         else if (flag==0)

46             printf ("No solution!\n");

47 

48     }

49     return 0;

50 }

 

你可能感兴趣的:(this)