蒟蒻刚学 OI 不会二分,求助
查看原帖
蒟蒻刚学 OI 不会二分,求助
917025
XYzero楼主2024/8/27 13:40

朴素二分,50pts

#include<bits/stdc++.h>
using namespace std;
double a,b,c,d;
double jisuan(double x){
	return 1.0 * a * x * x * x + 1.0 * b * x * x + c * x + 1.0 * d;
}
int main(){
	
	cin >> a >> b >> c >> d;
	
	for(double i = -100;i <= 100;i ++){
		if(jisuan(1.0 * i) == 0){
			printf("%.2lf ",i);
		}
        else if(jisuan(1.0 * i) * jisuan(1.0 * i + 1.0) < 0){
        	double l = i,r = i + 1.0;
			while(r - l >= 0.001){
				double mid = (l + r) / 2.0;
				if(jisuan(mid) * jisuan(l) <= 0)l = mid;
				else r = mid;
			}
			printf("%.2lf ",r);
		}
			
	}	
	
	
	
	return 0;
}
2024/8/27 13:40
加载中...