P1024 [NOIP 2001 提高组] 一元三次方程求解(1.26)
点击查看代码
#include<bits/stdc++.h>
using namespace std;
double a,b,c,d;
double f(double x)
{
return a*x*x*x+b*x*x+c*x+d;
}
int main()
{
cin>>a>>b>>c>>d;
int cnt=0;
for(int i=-100;i<=100;i++){
double l=i,r=i+1;
if(f(l)==0){
printf("%.2lf ",l);
cnt++;
}
else if(f(l)*f(r)<0){
for(int k=0;k<100;k++){
double mid=(l+r)/2;
if(f(mid)*f(l)<0) r=mid;
else l=mid;
}
cnt++;
printf("%.2lf ",l);
}
if(cnt==3) break;
}
return 0;
}

浙公网安备 33010602011771号