【题解】P1024 一元三次方程求解
题面
前言
水题
正文
这都把提示写在题干上了……
直接依题意枚举即可
当然,云落还是想说一下
这个“提示”实质上是零值定理的应用
因为一个朴素的三次函数在其定义域上是连续不断的
所以可以用零值定理
而零点自然就是方程 \(ax^3+bx^2+cx+d=0\) 的根力!
代码
#include<iostream>
#include<iomanip>
using namespace std;
double a,b,c,d;
inline double cal(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+=0.001){
double j=i+0.001;
double y1=cal(i),y2=cal(j);
if(y1>=0&&y2<=0||y1<=0&&y2>=0){
double x=(i+j)/2;
cout<<fixed<<setprecision(2)<<x<<' ';
}
}
return 0;
}
后记
我们,下班~
完结撒花