HDU 2675 Equation Again

公式转化+二分答案

首先,把题目中给的等式转化一下,变成了这个样子。

等式右边的值是可以求出来的。

ln(x)/x的大致图像是这样的

那么只要对[0,e]和[e,+∞]分别进行二分答案即可。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

double Y,k;
const double e=2.71828182845904523536;

int main()
{
    while(~scanf("%lf",&Y))
    {
        k=(1+log(Y))/(e*Y);
        int flag=0;
        double l=0,r=e;
        double mid=(l+r)/2;
        if(k>1.0/e) {
            printf("Happy to Women’s day!\n");
            continue;
        }
        if(Y==1)
        {
            printf("2.71828\n");continue;
        }
        while(1)
        {
            if(fabs(log(mid)/mid-k)<0.000000000001)
            {
                flag=1;
                printf("%.5lf ",mid);
                break;
            }
            if(log(mid)/mid>k)
            {
                r=mid;
                mid=(l+r)/2;
            }
            else
            {
                l=mid;
                mid=(l+r)/2;
            }
            if(fabs(l-r)<0.000000000001) break;
        }

        l=e,r=5000;
        mid=(l+r)/2;

        while(1)
        {
            if(fabs(log(mid)/mid-k)<0.00000000001)
            {
                flag=1;
                printf("%.5lf\n",mid);break;
            }
            if(log(mid)/mid<k)
            {
                r=mid;
                mid=(l+r)/2;
            }
            else
            {
                l=mid;
                mid=(l+r)/2;
            }
            if(fabs(l-r)<0.000000000001) break;
        }
        if(!flag) printf("Happy to Women’s day!\n");
    }
    return 0;
}
时间: 2024-08-09 00:59:58

HDU 2675 Equation Again的相关文章

二分搜索 HDOJ 2675 Equation Again

题目传送门 1 /* 2 二分搜索:式子两边取对数,将x提出来,那么另一边就是一个常数了,函数是:lnx/x.二分搜索x,注意要两次 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <cmath> 7 using namespace std; 8 9 const double e = exp (1.0); 10 11 double cal(double x) { 12 return log (x) /

HDU 5185 Equation (线性dp 完全背包)

Equation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 64    Accepted Submission(s): 20 Problem Description Gorwin is very interested in equations. Nowadays she gets an equation like this x1+

HDU 5937 Equation

题意: 有1~9数字各有a1, a2, -, a9个, 有无穷多的+和=. 问只用这些数字, 最多能组成多少个不同的等式x+y=z, 其中x,y,z∈[1,9]. 等式中只要有一个数字不一样 就是不一样的 思路: 计算下可以发现, 等式最多只有36个. 然后每个数字i的上界是17-i个 可以预先判掉答案一定是36的, 然后直接暴力搜索每个等式要不要就好了. 注意剪枝即可 1 const int maxn = 20; 2 int a[maxn]; 3 bool flag36; 4 int ans;

HDU 5937 Equation(DFS+剪枝)

题目链接 Equation 给定1-9这9个数字各自的卡片数,求能构成形如$i + j = k$的等式个数 等式中$i,j,k$必须都为个位数 若两个等式中$i,j,k$不完全相等,则这两个等式为不同的等式. 打表发现符合题意的等式有36个 那么通过01搜索状态数为$2^{36}$ TLE 我们求出若答案为36,每张卡片需求量$f[i]$ 每次读入$a[i]$的时候 若对$i(1 <= i <= 9)$, 都有$a[i] >= f[i]$ 则直接输出36 DFS的时候x为当前的等式用/不

hdu 5185 Equation(分析+DP)

题意: Gorwin is very interested in equations. Nowadays she gets an equation like thisx1+x2+x3+?+xn=n, and here 0≤xi≤nfor1≤i≤nxi≤xi+1≤xi+1for1≤i≤n−1 For a certain n, Gorwin wants to know how many combinations of xi satisfies above condition.For the answ

HDU 5185 Equation (DP)

题目:LINK 题意:求满足题目要求的x序列的种类数. 能够发现符合条件的序列去重后是一个0, 1, ..., k的连续序列(k满足k*(k+1)/2 <= n) ,则这个去重后的序列长度最长为sqrt(n)规模大小. 能够DP.dp[i][j]表示用到1~i的连续数字当前和为j的方法数.不用考虑长度是否满足n个,由于前面能够用0补上去. dp[i][j] = dp[i][j-i] + dp[i-1][j-i]; ans = sum(dp[i][n]) for i in range(1, k)

hdu 2199 Can you solve this equation?(高精度二分)

http://acm.hdu.edu.cn/howproblem.php?pid=2199 Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 13468    Accepted Submission(s): 6006 Problem Description Now,given the

hdu 2199 Can you solve this equation?

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2199 题目大意:找到满足8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y的x值,注意精确度问题. 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 5 using namespace std; 6 7 8 double fun(double s) 9 { 10 return

hdu 2199:Can you solve this equation?(二分搜索)

Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7493    Accepted Submission(s): 3484 Problem Description Now,given the equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,