zoukankan      html  css  js  c++  java
  • UVa

    Solve the equation:

            p ∗ e −x + q ∗ sin(x) + r ∗ cos(x) + s ∗ tan(x) + t ∗ x 2 + u = 0

    where 0 ≤ x ≤ 1.

    Input

    Input consists of multiple test cases and terminated by an EOF. Each test case consists of 6 integers in a single line: p, q, r, s, t and u (where 0 ≤ p, r ≤ 20 and −20 ≤ q, s, t ≤ 0). There will be maximum 2100 lines in the input file.

    Output

    For each set of input, there should be a line containing the value of x, correct up to 4 decimal places, or the string ‘No solution’, whichever is applicable.

    Sample Input

    0 0 0 0 -2 1

    1 0 0 0 -1 2

    1 -1 1 -1 -1 1

    Sample Output

    0.7071

    No solution

    0.7554

    题意:给出一个方程,求解X;

    思路:因为方程是单调递减的,所以二分求解;

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #define EPS (10e-8)
     5 using namespace std;
     6 double p,q,r,s,t,u;
     7 inline double fomula(double x){
     8     return p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u;
     9 }
    10 int main(){
    11     while(scanf("%lf%lf%lf%lf%lf%lf",&p,&q,&r,&s,&t,&u)!=EOF){
    12         double left=0, right=1, mid;
    13         bool flag=false;
    14         if(fomula(left)*fomula(right) > 0){
    15             printf("No solution
    ");
    16             continue;
    17         }
    18         while(right-left > EPS){
    19             mid = (left+right)/2;
    20             if(fomula(mid)*fomula(left) > 0) left=mid;
    21             else right=mid;
    22         }
    23 
    24         printf("%.4f
    ", mid);
    25     }
    26     return 0;
    27 }
  • 相关阅读:
    代码品质
    窖藏好题
    最后一次模拟
    几个有意思的题目
    【数组练习】
    【复习】图论
    【复习】后缀数组
    The Usage Of Difference Table
    【复习】NTT注意事项
    CF999E Reachability from the Capital
  • 原文地址:https://www.cnblogs.com/wydxry/p/7245474.html
Copyright © 2011-2022 走看看