HDU 2675 Equation Again 二分求函数零点

/*取对数后得ln(x)/x=(1+ln(y))/(e*y)显然右边是常数作图可知道ln(x)/x在x>=1范围先增后减,极值在x=e处对于任意一个y!=1,都有左右两个解,,二分解决就是了……*/#include<iostream>#include<cmath>#include<cstdio>using namespace std;const double ee=2.718281828459;const double eps=1e-7;int main(){double x,y;// for(int i=1;i<=2000;i++)// cout<<log(i)/(1.0*i)<<endl;// while(scanf("%lf",&y)!=EOF)while(scanf("%lf",&y)!=EOF){double tmp=(1+log(y))/(y*ee);double low=1+eps,hei=ee-eps,mid;if(tmp*ee-1>eps){puts("Happy to Women’s day!");continue;}while(hei-low>eps){mid=(hei+low)/2;if(log(mid)*(y*ee)>(1+log(y))*mid)hei=mid;elselow=mid;}if(y==1)printf("%.5lf\n",(hei+low)/2);else if(y>1){double ans=(hei+low)/2;low=ee+eps,hei=2000000000+eps;while(hei-low>eps){mid=(hei+low)/2;if(log(mid)*(y*ee)<(1+log(y))*mid)hei=mid;elselow=mid;}printf("%.5lf %.5lf\n",ans,(hei+low)/2);}}return 0;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

没有绝望的处境,只有对处境绝望的人。

HDU 2675 Equation Again 二分求函数零点

相关文章:

你感兴趣的文章:

标签云: