即对一个一元三次方程求解,要求输出全部的三个解并且精确到小数点后两位。
并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值 ≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。
都说的这么清楚了,连范围都告诉我们了…
枚举呗
从-100开始枚举,到100时结束,如果满足等式就记录下来…
因为要精确到小数点后两位嘛,所以我们就枚举三位,每次加上0.001
反正数据也不大,也不会超时
简单代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
double a , b , c , d;
cin >> a >> b >> c >> d;
for (double i = -100;i <= 100;i += 0.001) {
double j = i + 0.001;
double y1 = a * i * i * i + b * i * i + c * i + d;
double y2 = a * j * j * j + b * j * j + c * j + d;
if (y1 >= 0 && y2 <= 0 || y1 <= 0 && y2 >= 0) {
double x = (i + j) / 2;
printf("%.2lf ",x);
}
}
return 0;
}
ohhhhhhh水题一道,想起来写了题解罢了…