PTA—基础编程题目集(7-18)

7-18 二分法求多项式单根

目录

题目描述

输出格式:

输入样例:

输出样例:

参考代码 

 总结


题目描述

输入在第1行中顺序给出多项式的4个系数a3​、a2​、a1​、a0​,在第2行中顺序给出区间端点a和b。题目保证多项式在给定区间内存在唯一单根。

输出格式:

在一行中输出该多项式在该区间内的根,精确到小数点后2位。

输入样例:

3 -1 -3 1
-0.5 0.5

输出样例:

0.33

参考代码 

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    double a3, a2, a1, a0, a, b, x, y1, y2, y0 = 1;
    int i=0;
    cin >> a3 >> a2 >> a1 >> a0;
    cin >> a >> b;

    while (y0 != 0) {
        i++;
        x = (a + b) / 2;
        y0 = a3 * x * x * x + a2 * x * x + a1 * x + a0;
        y1 = a3 * a * a * a + a2 * a * a + a1 * a + a0;
        y2 = a3 * b * b * b + a2 * b * b + a1 * b + a0;
        if (y1*y0>0) {
            a = (a + b) / 2;
        }
        if (y2*y0>0) {
            b = (a + b) / 2;
        }
        if (i == 100) break;
    }
    cout << fixed << setprecision(2) << x;
    return 0;
}

 总结

注意理解题意,判断几种特殊情况,如端点为根,如果用了循环,还要思考中心值很小但不为根的情况,防止死循环。

其他题目,请看—>PTA—基础编程题目集

创作不易,如果我的文章对你有帮助,请点赞收藏关注,您的支持是我前进的最大动力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值