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
",(r+l)/2);
38             //break;
39             flag=1;
40         }
41         else
42             {printf ("No solution!
");flag=1;}
43         if (yy==r&&flag==0)
44             printf ("%.4lf
",y);
45         else if (flag==0)
46             printf ("No solution!
");
47 
48     }
49     return 0;
50 }
原文地址:https://www.cnblogs.com/qq-star/p/3888842.html