hdu2675

来源:互联网 发布:外汇软件 编辑:程序博客网 时间:2024/06/16 16:15

Equation Again

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1770    Accepted Submission(s): 573


Problem Description
This problem’s author is too lazy to write the problem description, so he only give you a equation like X(eY) == (eY)x, and the value of Y, your task is calculate the value of X.
Note : here e is the Natural logarithm.
 

Input
Each line will contain one number Y(Y >= 1). Process to end of file.
 

Output
For each case, output X on one line, accurate to five decimal places, if there are many answers, output them in increasing order, if there is no answer, just output “Happy to Women’s day!”.
 

Sample Input
1
 

Sample Output

2.71828

AC代码:

#include<cstdio>#include<cstring>#include<string.h>#include<cmath>#include<iostream>#include<algorithm>using namespace std; const double ee=2.718281828459; const double eps=1e-7; int main() {         double x,y;         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;                         else                                  low=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;                                 else                                          low=mid;                         }                         printf("%.5lf %.5lf\n",ans,(hei+low)/2);                 }         }         return 0; } 

原创粉丝点击