精度求助
查看原帖
精度求助
368204
ShanQing楼主2022/11/12 14:47

还能再优化精度吗。卡在94pts

#include <bits/stdc++.h>
using namespace std;
int t;
double D,H,h,b,eps=0.00000001;
double l,r,fl,fr,mid;
double check(double x)
{
	if(x<=b) return h*x/(H-h);
	else return D-x+H-D*(H-h)/x;
}
int main()
{
	//freopen("P5931_4.in","r",stdin);
	scanf("%d",&t);
	while(t--)
	{
		scanf("%lf%lf%lf",&H,&h,&D);
		b=D*(H-h)/H;
		l=0.0;r=D;
		while(r-l>eps)
		{
			mid=(l+r)/2;
			fl=mid-eps;
			fr=mid+eps;
			if(check(fl)>check(fr)) r=mid;
			else l=mid;
		}
		printf("%.3lf\n",check(l));
	}
	return 0;
}
//1 725.530691 57.533500 6.770247
2022/11/12 14:47
加载中...