• 江西财经大学第一届程序设计竞赛 F


    链接:https://www.nowcoder.com/acm/contest/115/F
    来源:牛客网

    题目描述

    对于方程 2018 * x ^ 4 + 21 * x + 5 * x ^ 3 + 5 * x ^ 2 + 14 = Y,
    告诉你Y的值,你能找出方程在0~100之间的解吗?

    输入描述:

    第一行输入一个正整数T(表示样例个数)
    接下来T组样例
    每组样例一行,输入一个实数Y

    输出描述:

    一行输出一个样例对应的结果,
    输出方程在0~100之间的解,保留小数点后4位小数;如果不存在,输出 -1
    示例1

    输入

    2
    1
    20180421

    输出

    -1
    9.9993
    牛顿表示迭代法和二分都可以哦
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int debug_num=0;
    
    const double eps=1e-6;
    
    double y;
    
    double f(double x)
    {
        return (2018*x*x*x*x+5*x*x*x+5*x*x+21*x+14-y);
    }
    
    int main()
    {
    
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%lf",&y);
            int flag=0;
            for(double ans=0;ans<=100-0.5;ans=ans+0.5){
                if(f(ans)*f(ans+0.5)>0) continue;
                double l=ans-0.5,r=ans+0.5;
                if(r>l){
                    while(r-l>eps)
                    {
                        double mid=(l+r)/2;
                        if(f(mid)>=0) r=mid;
                        else l=mid;
                    }
                }
                else{
                    while(l-r>eps)
                    {
                        double mid=(l+r)/2;
                        if(f(mid)<=0) r=mid;
                        else l=mid;
                    }
                }
                if(r>=0&&r<=100){
                    printf("%.4f
    ",r);
                    flag=1;
                    break;
                }
            }
            if(!flag) printf("-1
    ");
        }
        return 0;
    }
  • 相关阅读:
    牛客网 CSL的英语考试
    SDNU 1016.矩形合并
    SDNU 1412.Huffuman树(优先队列)
    HDU
    HDU
    HDU
    SDNU 1504.B.Fibonacci
    Find them, Catch them(种类并查集)
    golang中的net/rpc包
    gRPC
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/8904134.html
Copyright © 2020-2023  润新知