[P1034][NOIP2001]一元三次方程求解 (二分)
二分
#include<bits/stdc++.h> using namespace std; double a,b,c,d; double fc(double x) { return a*pow(x,3)+b*pow(x,2)+c*x+d; } int main() { scanf("%lf%lf%lf%lf",&a,&b,&c,&d); double l=-100,r=100,ans,x1,x2,mid; int s=0; for(int i=-100;i<=100;i++){ l=i; r=i+1; x1=fc(l); x2=fc(r); if(!x1){ printf("%.2lf ",l); s++; } if(x1*x2<0){ while(r-l>=0.001) { mid=(l+r)/2; if(fc(mid)*fc(r)<=0) l=mid; else r=mid; }printf("%.2f ",r); s++; } if(s==3) break; } return 0; }