样例通过但是50分。。各位大佬帮帮忙。。。。
查看原帖
样例通过但是50分。。各位大佬帮帮忙。。。。
325650
seven7777楼主2021/3/10 11:28
#include <bits/stdc++.h> 
using namespace std;
#define eps 1e-4
int a,b,c,d;
double f(double x)
{
	return a*pow(x,3)+b*pow(x,2)+c*x+d;
}
int main()
{
	cin>>a>>b>>c>>d;
	for(int i=-100;i<=100;i++)
	{
		double l=i,r=l+1,mid;    //任意两根之差不小于1
		if(fabs(f(l))<eps)
			printf("%.2lf ",l);
		else if(fabs(f(r))<eps)
			continue;   //区间是左闭右开,在右边取不到
		else if(f(l)*f(r)<0)
		{
			while(r-l<eps)   //开始二分 
			{
				mid=(l+r)/2;	
				if(f(mid)*f(r)>0)
					r=mid;
				else
					l=mid;
			}
			printf("%.2lf ",l);  //变量类型是double,要用%lf	
		} 
	}
	
}
2021/3/10 11:28
加载中...