【题解】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;
}

后记

我们,下班~

完结撒花

posted @ 2024-12-26 14:00  sunxuhetai  阅读(36)  评论(0)    收藏  举报