链接
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1282
题解
调了半天,最后发现是我二分的r和题目输入的r冲突了qwq
因为这个函数单调减,所以一个二分就可以了
代码
#include <bits/stdc++.h>
#define eps 1e-8
using namespace std;
double p, q, r, s, t, u;
double f(double x)
{
return p*exp(-x) + q*sin(x) + r*cos(x) + s*tan(x) + t*x*x + u;
}
int main()
{
double L, R, mid;
while(cin>>p>>q>>r>>s>>t>>u)
{
if(f(0)<-eps or f(1)>eps)
{
printf("No solution\n");
continue;
}
L=0, R=1, mid=(L+R)/2;
for(auto i=1;i<=200;i++)
{
if(f(mid)>0)L=mid;
else R=mid;
mid=(L+R)/2;
}
printf("%.4lf\n",mid);
}
return 0;
}