最近失恋了(其实只是被单方面丑拒罢了),二分查找感觉有多种情况,左右端点是否是开区间,特判之后,有要求第一个出现的位置;有普通的二分查找到那个整数;有查找到需要的精度……
且判断循环的依据都是l<=r
double a,b,c,d;
double x1,x2;
double l,mid,r;
double f(double x) {
return a*x*x*x+b*x*x+c*x+d;
}
int main() {
cin>>a>>b>>c>>d;
for(int i=-100;i<100;i++) {
l=i;r=i+1;
x1=f(l);x2=f(r);
if(!x1) cout<<fixed<<setprecision(2)<<l<<' ';
if(x1*x2<0) {
while(r-l>=0.001) {
mid=(l+r)/2;
if(f(r)*f(mid)<=0) l=mid;
else r=mid;
}
cout<<fixed<<setprecision(2)<<r<<' ';//l也可以ac
}
}
return 0;
}