UVA 10341 Solve It

UVA_10341

    由于函数在指定定义域内是单调的,所以直接二分答案即可。

#include<stdio.h>
#include
<math.h>
#include
<stdlib.h>
double p,q,r,s,t,u;
double f(double x)
{
double temp;
temp
=p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u;
return temp;
}
int main()
{
int i;
double max,min,mid;
while(scanf("%lf%lf%lf%lf%lf%lf",&p,&q,&r,&s,&t,&u)!=EOF)
{
max
=1.0;
min
=0.0;
for(i=0;i<100;i++)
{
mid
=(max+min)/2;
if(f(mid)>0)
min
=mid;
else
max
=mid;
}
if(fabs(f(mid)-0.0)<1e-8)
printf(
"%.4f\n",mid);
else
printf(
"No solution\n");
}
return 0;
}


你可能感兴趣的:(uva)