题目
题解
暴力枚举。
我一看这个数据量,-100~100
,我就知道稳了,枚举就行了。
因为输出要精确到两位小数,因此我们以步长为0.001
遍历-100~100
,将枚举的值代入方程中判断是否为0
,是就输出,要是控制的阈值到位,输出一定是正好三个。
这里用的是浮点数判断是否为0
,abs(x) < esp
就表示浮点数x==0
。
本题中esp
要与步长一致,否则不能保证输出是三个解。
代码
#include<bits/stdc++.h>
using namespace std;
const double esp = 0.001;
double a, b, c, d;
double fun(double x) {
return a*x*x*x + b*x*x + c*x + d;
}
int main()
{
cin>>a>>b>>c>>d;
for(double i = -100;i <= 100;i += esp)
if(abs(fun(i)) < esp) printf("%.2lf ", i);
return 0;
}