灯泡
题意
求$L$最大值
我们设人与灯低的距离为$x$,墙上的部分长$y$,用$x$表示出$L$和$y$,通过均值不等式求解最大值
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int t;
double H,h,D;
double cal()
{
double x=sqrt((H-h)*D);//均值不等式成立条件
x=min(x,D);//x右边界
x=max(x,(D*H-D*h)/H);//x左边界
return D+H-x-(H-h)*D/x;
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%lf%lf%lf",&H,&h,&D);
printf("%.3lf\n",cal());
}
return 0;
}