Solve It UVA

来源:互联网 发布:json汉字 编辑:程序博客网 时间:2024/06/05 17:58

题目链接:点击打开链接

题意: 给出一个方程式,求出该方程式的解;

题解:

           二分法,有题可知该式为递减的,所以分析当 x =0和x = 1时的值,可以得出是否有解,如果有解,就运用二分,注意这里不能用 L<R 进行比较,最好用 循环做;

#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>#include<cstring>#include<iomanip>using namespace std;#define e 2.718281828459045#define eps 1e-10int p,q,r,s,t,u;double get(double x){    return p*pow(e,-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u;}int main(){    while(cin>>p>>q>>r>>s>>t>>u){        double l=0,r=1;        double mid;        if(abs(get(1.0))<eps) cout<<1.0000<<endl;        else if(abs(get(0.0))<eps) cout<<0.0000<<endl;        else if(get(0.0)*get(1.0)>eps) cout<<"No solution"<<endl;        else{           for(int i=0;i<100;i++){              mid=(l+r)/2.0;              if(get(mid)>0) l=mid;              else r=mid;           }           cout<<fixed<<setprecision(4)<<mid<<endl;        }    }    return 0;}


原创粉丝点击