1 条题解

  • 0
    @ 2023-6-21 20:13:15

    C++ :

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    double D,H,h;
    double decide(double x){return D-x+H-(H-h)*D/x;}
    int main()
    {
    	int t;scanf("%d",&t);
    	while(t--)
    	{
    		scanf("%lf%lf%lf",&H,&h,&D);//H:灯泡高度,h:身高,D:灯泡和墙水平距离 
    		double l=D-h*D/H,r=D;
    		while(r-l>1e-8)
    		{
    			double lmid=l+(r-l)/3;
    			double rmid=r-(r-l)/3;
    			if(decide(lmid)>decide(rmid))r=rmid;
    			else l=lmid;
    		}
    		printf("%.3lf\n",decide(l));
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    1058
    时间
    1000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    2
    已通过
    2
    上传者