zoukankan      html  css  js  c++  java
  • 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): 7156    Accepted Submission(s): 3318

    Problem Description

    Now,given the equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,can you find its solution between 0 and 100;
    Now please try your lucky.

    Input

    The first line of the input contains an integer T(1<=T<=100) which means the number of test cases. Then T lines follow, each line has a real number Y (fabs(Y) <= 1e10);

    Output

    For each test case, you should just output one real number(accurate up to 4 decimal places),which is the solution of the equation,or “No solution!”,if there is no solution for the equation between 0 and 100.

    Sample Input

    2 100 -4

    Sample Output

    1.6152 No solution!

    ::很容易知道y=8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 单调递增,那么我们就可以对[0,100]进行二分搜索,找出满足条件的数

    代码:

        #include <iostream>
        #include <cstdio>
        #include <cstring>
        #include <algorithm>
        #include <cmath>
        using namespace std;
        double f(double x){
            return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6;
        }
    
        int main()
        {
            int T,y;
            scanf("%d",&T);
            while (T--)
            {
                scanf("%d",&y);
                if( f(0) > y || f(100) < y) //f(0)>y或f(100)<y则无解
                {
                    printf("No solution!
    ");
                    continue;
                }
                double l = 1.0, r = 100.0;
                while( r - l > 1e-6)
                {
                    double m=(l+r)/2;
                    if(f(m)>y) r=m-1e-7;
                    else l=m+1e-7;
                }
                printf("%.4lf
    ",(l+r)/2);
            }
            return 0;
        }
  • 相关阅读:
    sql 修改字段小记
    (转)web.config 为某个单独页面设置编码格式
    gb2312编码提交url乱码解决
    Windows 8上强制Visual Studio以管理员身份运行
    new、delete用法(一)
    把varchar转换为int 然后进行排序
    linq 整体修改字段
    游标用法
    分组并赋值
    读取xml
  • 原文地址:https://www.cnblogs.com/zyx1314/p/3608957.html
Copyright © 2011-2022 走看看