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;
}