Equation Again 最大化最小值

本文探讨了一种用于解决特定形式方程的算法,该算法通过数学优化和搜索技术,实现了对未知数的准确求解。对于每条输入数据,程序会计算并输出精确到小数点后五位的解,若无解则提示特定信息。
C - Equation Again
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit  Status

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
 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 const double INF=0x3f3f3f3f;
 5 const double s=1e-9;
 6 const double e=exp(1);
 7 double y,Y;
 8 
 9 bool C(double x)
10 {
11     if((log(x)/x)<(log(e*y)/(e*y)))
12         return true;
13     else
14         return false;
15 }
16 
17 int main()
18 {
19     int i,j;
20     while(scanf("%lf",&y)!=EOF)
21     {
22         double Y=(log(e*y)/(e*y));
23         if(y==1.0)
24             printf("%.5lf\n",e);
25         else if(Y>(log(e)/e))
26         {
27             printf("Happy to Women’s day!\n");
28         }
29         else
30         {
31             double lb=1.0,ub=e;
32             for(i=1;i<=1000;i++)
33             {
34                 double mid=(lb+ub)/2;
35                 if(C(mid))
36                     lb=mid;
37                 else
38                     ub=mid;
39             }
40             printf("%.5lf ",ub);
41             lb=e,ub=INF;
42             for(i=1;i<=1000;i++)
43             {
44                 double mid=(lb+ub)/2;
45                 if(C(mid))
46                     ub=mid;
47                 else
48                     lb=mid;
49             }
50             printf("%.5lf\n",lb);
51 
52         }
53     }
54     return 0;
55 }
View Code

 

转载于:https://www.cnblogs.com/cyd308/p/4681296.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值