Can You solve this equation? Time limit:2000/1000 MS (java/others) Memory limit:32768/32768 K (java/others)
Total submission (s): 8292 Accepted Submission (s): 3830
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 10 0;
Now 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);
Should just output one real number (accurate up to 4 decimal places), which is the solution O f 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!
Water problem together ~ ~ ~ but also is a very classic two decomposition equation of the topic.
Test instructions: Give an equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 ==y, give the title Y, solve within the interval [0,100].
Analysis: The derivation shows that the function is monocytogenes on [0,100] and has monotonicity, so it can be solved by two points. It's completely a template question ~ ~ ~
AC Code:
#include <cmath>
#include <cstdio>
#define EPS 1e-8
double Fun (double x)
{
return 8*x *x*x*x + 7*x*x*x + 2*x*x + 3*x + 6;
}
int main ()
{
double y,a,b,m,d;
int T;
scanf ("%d", &t);
while (t--)
{
scanf ("%lf", &y);
if (y<fun (0) | | y>fun (+))
{
printf ("No solution!\n");
Continue;
}
a=0.0;
b=100.0;
while (b-a>eps)
{
m=b+ (A-B)/2;
if (Fun (m) <y) a=m;
else b=m;
}
printf ("%.4f\n", a);
}
return 0;
}