您的位置:首页 > 其它

UVa 10341-Solve It

2012-07-31 09:51 337 查看
是个单调递减的函数,然后用二分法做,循环取估值 ~

代码如下:

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
int main()
{
#ifdef test
freopen("sample.txt","r",stdin);
#endif
double p,q,r,s,t,u,mid;
while(scanf("%lf%lf%lf%lf%lf%lf",&p,&q,&r,&s,&t,&u)!=EOF)
{
double fist=0,last=1,n=0;
while(n<30)
{
mid=(fist+last)/2;
if(p*exp(-mid) + q*sin(mid) + r*cos(mid) + s*tan(mid) + t*mid*mid + u>0)
fist=mid;
else
last=mid;
n++;
}
if(fabs(p*exp(-mid) + q*sin(mid) + r*cos(mid) + s*tan(mid) + t*mid*mid + u)<0.0000001)
printf("%.4lf\n",mid);
else
printf("No solution\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: