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—基础编程题目集
创作不易,如果我的文章对你有帮助,请点赞、收藏和关注,您的支持是我前进的最大动力。