二分
#include<bits/stdc++.h>
using namespace std;
double a,b,c,d;
double fun(double x){
double num=a*x*x*x+b*x*x+c*x+d;
return num;
}
int main(){
double x1,x2,x3;
cin>>a>>b>>c>>d;
for(double i=-100;i<100;i++)
{
x1=i,x2=i+1;
if(fun(x1)==0)printf("%.2lf ",x1);
else if(fun(x1)*fun(x2)<0){
while(x2-x1>1e-4){
double mid=(x1+x2)/2;
if(fun(mid)*fun(x2)<=0)x1=mid;
else x2=mid;
}
printf("%.2lf ",x1);
}
}
return 0;
}
暴力
#include<bits/stdc++.h>
using namespace std;
double a,b,c,d;
double fun(double x){
double num=a*x*x*x+b*x*x+c*x+d;
return num;
}
int main(){
double x1,x2,x3;
cin>>a>>b>>c>>d;
for(double i=-100;i<=100;i=i+0.03)
{
if(fabs(fun(i))<1e-4)printf("%.2lf ",i);
}
return 0;
}