uva 10341 Solve It
来源:互联网 发布:c#开发书籍推荐 知乎 编辑:程序博客网 时间:2024/05/05 03:54
二分法,注意端点精度0.00001是过不了的……1e-9差不多吧……
#include<stdio.h>#include<math.h>double a1,a2,p,q,r,s,t,u;double f(double x){ double ans=p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u; return ans;}int main(){ double ans; while(~scanf("%lf%lf%lf%lf%lf%lf",&p,&q,&r,&s,&t,&u)) { a1=0;a2=1; if(f(0)<0&&f(1)<0) printf("No solution\n"); else if(f(0)>0&&f(1)>0) printf("No solution\n"); else { while(a2-a1>=0.000000001) { ans=(a2-a1)/2; if(f(ans+a1)>0) { if(f(a1)<0) a2=ans+a1; else a1=ans+a1; } else { if(f(a1)<0) a1=ans+a1; else a2=ans+a1; } } printf("%.4f\n",a1); } } return 0;}
简化版
#include<stdio.h>#include<math.h>double p,q,r,s,t,u;double f(double x){ double ans=p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u; return ans;}int main(){ double a1,a2,ans,k; while(~scanf("%lf%lf%lf%lf%lf%lf",&p,&q,&r,&s,&t,&u)) { a1=0;a2=1; if(f(0)*f(1)>0) printf("No solution\n"); else { while(a2-a1>0.000000001) { ans=a1+(a2-a1)/2; k=f(ans); if(k<0) a2=ans; else a1=ans; } printf("%.4lf\n",a1); } } return 0;}
0 0
- UVa 10341-Solve It
- UVa 10341 - Solve It
- uva 10341 - Solve It
- uva 10341 - Solve It
- UVA - 10341 Solve It
- UVa 10341 - Solve It
- UVA 10341 - Solve It
- Uva 10341 Solve It
- UVa:10341 Solve It
- UVA 10341 Solve It
- UVa 10341 Solve It
- uva 10341 Solve It
- uva 10341 Solve It
- UVa 10341 - Solve It
- UVa 10341 - Solve It
- UVa 10341 - Solve It
- UVA 10341 Solve It
- UVa-10341-Solve It
- javaweb学习总结(四十二)——Filter(过滤器)学习
- Debugging Deadlocks on Android
- HTML基础
- Javascript:消息框的使用
- windows程序窗体创建流程模型A--发送自定义消息逻辑上出现Bug
- uva 10341 Solve It
- 兔子--RAM,ROM
- vs2008中的MFC用共享DLL和静态中使用MFC,遇到的问题
- shell 进制转换
- Windows下 ImportError: cannot import name BeautifulSoup
- 兔子--Resource is out of sync with the file system......
- Compare Version Numbers
- Caching Bitmaps
- 兔子--静态代码块与构造代码块