首页 > 其他 > 详细

UVa 10341 (二分求根) Solve It

时间:2015-03-14 23:07:21      阅读:399      评论:0      收藏:0      [点我收藏+]

很水的一道题,因为你发现这个函数是单调递减的,所以二分法求出函数的根即可。

技术分享
 1 #include <cstdio>
 2 #include <cmath>
 3 //using namespace std;
 4 
 5 const double e = 1e-14;
 6 double p, q, r, s, t, u;
 7 
 8 inline double f(double x)
 9 { return p*exp(-x) + q*sin(x) + r*cos(x) + s*tan(x) + t*x*x + u; }
10 
11 int main()
12 {
13     //freopen("in.txt", "r", stdin);
14 
15     while(scanf("%lf%lf%lf%lf%lf%lf", &p, &q, &r, &s, &t, &u) == 6)
16     {
17         if(f(0)<-e || f(1)>e) { puts("No solution"); continue; }
18         double L = 0, R = 1, m;
19         for(int i = 0; i < 30; i++)
20         {
21             m = (L+R)/2;
22             if(f(m) < 0) R = m;
23             else L = m;
24         }
25         printf("%.4f\n", m);
26     }
27 
28     return 0;
29 }
代码君

 

UVa 10341 (二分求根) Solve It

原文:http://www.cnblogs.com/AOQNRMGYXLMV/p/4338394.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!