陷入误区了 急需大佬们的help!
查看原帖
陷入误区了 急需大佬们的help!
1122555
zuijiubugui楼主2024/1/14 01:21
double a,b,c,d;
double fun(double x)
{
	return a*x*x*x+b*x*x+c*x+d;
};
int main()
{
	double l,r,mid,llim,rlim;
	int i,res=0;
	cin>>a>>b>>c>>d;
	for(i=-100;i<101;i++)
	{
		l=i;
		r=i+1;
		llim=fun(l);
		rlim=fun(r);
		if(llim==0)
		{
			printf("%0.2lf ",l);
			res++;
		}
		if(llim*rlim<0)
		{
			while(r-l>1e-5)
			{
				mid=(l+r)/2;
				if(fun(mid)>0.0) r=mid;
				else l=mid;
			}
			printf("%.2lf ",l);
			res++;
		}
		if(res==3) return 0;
	}
	return 0;
}

样例1 -4.65 2.25 1.4 当我写成if(fun(mid)>0.0) r=mid;时,我的第二个答案是0.00.但这不是关键,关键是我进行调试当l=0时,r是等于1的,但是rlim竟然不等于0,而是-4.4几,这是为什么?

/*if(fun(mid)fun(r)>0.0) r=mid;改成这个就ac了,但是这不是关键,关键是对样例r=1时,rlim竟然不等于0!/

2024/1/14 01:21
加载中...