UVa 10341 - Solve It

来源:互联网 发布:一般linux培训要多少钱 编辑:程序博客网 时间:2024/05/02 16:42

传送门UVa 10341 - Solve It


因为是单调递减函数,用小白里面的非线性方程求根知识,二分法进行求解。


#include <cstdio>#include <cmath>#include <algorithm>using namespace std;double p, q, r, s, t, u;double m = 0, x = 0, y = 1, result;double Cal(double m){return p * exp(-m) + q * sin(m) + r * cos(m) + s * tan(m) + t * m * m + u;}int main(){//freopen("input.txt", "r", stdin);while (~scanf("%lf%lf%lf%lf%lf%lf", &p, &q, &r, &s, &t, &u)){if (Cal(0) < 0 || Cal(1) > 0){printf("No solution\n");continue;}m = 0, x = 0, y = 1, result;while (fabs(y - x) > 1e-10){m = x + (y - x) / 2;result = Cal(m);if (result < 0)y = m;elsex = m;}printf("%.4f\n", m);}return 0;}


0 0
原创粉丝点击