此题第四个数据似乎是错的
查看原帖
此题第四个数据似乎是错的
220075
lionelfung楼主2021/6/10 23:32

第四个无论如何都是WA,我试了一下题解中能够AC的程序,发现似乎有一些问题, 譬如笃行的题解中,有如下的代码:

double k=(l+r)/2,u=r-l;
double a=m;
if(u<0.0001) out(k);

这里第3行, r和l之差小于0.0001时输出k,k是r和l的中间数。可是k是不是就是最终解呢?其实k并没有得到验证。 再看另一个能够AC的题解:

	cin>>n>>m>>k;
   	///////////////////////二分模板
	l=0;r=10;//月利率可能大于1
	while(r-l>=0.0001){//注意精度问题 
		double mid=(l+r)/2;
		if(pd(mid))r=mid;
		else l=mid;
	}
   	///////////////////////
	cout<<fixed<<setprecision(1)<<l*100;

同样的问题,为什么最终输出的是l而不是r? r是经过pd()函数验证过可用的,而l并不是,如果把输出的l改成r,则第四个数据变成WA,这题的数据又不公开,又无法手动验证正确性,但是我觉得大概率的可能第四个数据是错误的。

2021/6/10 23:32
加载中...