HDU 2199 Can you solve this equation?
Can you solve this equation?
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.
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
2
100
-4
Sample Output
1.6152
No solution!
1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 using namespace std; 5 6 double cal(double x) 7 { 8 return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6; 9 } 10 11 int main() 12 { 13 double x,l,r; 14 int t; 15 scanf("%d",&t); 16 while(t--) 17 { 18 scanf("%lf",&x); 19 if(x<cal(0)||x>cal(100)) 20 { 21 printf("No solution!\n"); 22 continue; 23 } 24 l=0,r=100; 25 while(fabs(l-r)>1e-8) 26 { 27 double mid=(l+r)/2; 28 if(cal(mid)>x) 29 r=mid; 30 else 31 l=mid; 32 } 33 printf("%.4lf\n",l); 34 } 35 return 0; 36 }