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

江西财经大学第一届程序设计竞赛 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

思路

二分法。

此题和 2018年东北农业大学春季校赛 A-wyh的曲线 有异曲同工之妙。

AC代码

#include <iostream>
#include <iomanip>
using namespace std;

double getY(double x) {
    return x*x*x*x*2018+x*21+x*x*x*5+x*x*5+14;
}

int main() {
    int T;
    cin >> T;
    while(T--) {
        double Y;
        cin >> Y;
        if(getY(100)<Y || Y<14) {
            cout << -1 << endl;
        } else {
            double right=100.0,left=0.0,mid;
            while(right-left > 1e-5) {
                mid=(right+left)/2.0;
                if(getY(mid)>Y)
                    right=mid;
                else
                    left=mid;
            }
            cout << fixed << setprecision(4) << mid << endl;
        }
    }
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值