hdu2675

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;  } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值