50pts,求调
查看原帖
50pts,求调
1403280
TWJtwj楼主2025/7/25 14:52
#include <bits/stdc++.h>
using namespace std;
double a,b,c,d;
double arr[10];
double 	f(double x)
{
	return a*x*x*x+b*x*x+c*x+d;
}
double find(double l,double r)
{
	int flag=1;
	while(l<=r)
	{
		int flag=0,flag2=0;
		double mid=(r-l)/2+l;
		if(f(l)*f(mid)>=0)
		{
			flag=1;
			r=mid;	
		} 
		else if(f(r)*f(mid)<=0)
		{
			flag2=1;
			l=mid;	
		}
		else return 101; 
		if(f(mid)==0)
			return mid;
		else if(l==r)
			return 101;
	}
}
int main()
{
	cin>>a>>b>>c>>d;
	int num=0;
	for(int i=-100;i<100;i++)
	{
		double res=find(i,i+1);
		if(res<=100)
		{
			arr[num++]=res;
		}
	}
	if(arr[0]>arr[1])
		swap(arr[0],arr[1]);
	if(arr[1]>arr[2])
		swap(arr[1],arr[2]);
	printf("%.2lf %.2lf %.2lf",arr[0],arr[1],arr[2]);
}
2025/7/25 14:52
加载中...