admin 管理员组

文章数量: 887021

游泳池

有一个游泳池,形状为等腰直角三角形,直角边长250米。   

 游泳池可以看作是在坐标系统中(如上图所示)。用一条两端点在三角形边上的线段把游泳池分成两个面积相同的部分。
  在给定线段其中一个端点的情况下,要你编程输出另一个端点。

Input

  输入第一行包含两个整数,表示线段一个端点的坐标,保证给定的端点在直角三角形的边上。

Output

  输出线段另一个端点的坐标,答案保留2位小数。

Sample Input

输入1:

0 0



输入2:

230 20



输入3:

0 40

Sample Output

输出1:

125.00 125.00



输出2:

0.00 114.13



输出3:

148.81 101.19

 

 

分析:首先我们考虑在顶点上的情况,打个点就好。然后我们考虑在x轴上的情况。先求出总面积为31250。我么们知道,无论怎么分,总会有一个三角形,另一个图形就可以用31250减去即可。我们知道在三角形斜边上的任意一点的横纵坐标之和250,即x+y=250,而在坐标轴上就有一边为0.下面有图解。已知点为A,要求点为B或B’点A为(x,0)。第一种我们就可以用面积求出OB。即可得到答案。第二种复杂一点,我们知道OA,因为OC=120,

所以AC=120-x,可得BD,即为要求点的纵坐标,又因为横纵坐标之和为250,可得横坐标。

 

 

 

const

 p=31250;

var

 x,y,t,t1:longint;

 ansx,ansy:real;

begin

 readln(x,y);

 if (x=0) and (y=0) then beginwriteln('125.00 125.00'); exit; end;

 if (x=0) and (y=250) thenbegin writeln('125.00 0.00'); exit; end;

 if (y=0) and (x=250) thenbegin writeln('0.00 125.00'); exit; end;

 if (y=0) then

  begin

   t:=x;

   t1:=250-x;

   if p/t<=250 then beginansx:=0; ansy:=p/t; end

             else begin ansy:=p/t1; ansx:=250-ansy; end;

 

  end

 else if (x=0) then

  begin

   t:=y;

   t1:=250-y;

   if p/t<=250 then beginansy:=0; ansx:=p/t; end

               else beginansx:=p/t1; ansy:=250-ansx; end;

  end

 else

 begin

  if p/x<=250 then beginansx:=0; ansy:=250-p/x; end

              else beginansy:=0; ansx:=250-p/y; end;

 end;

 writeln(ansx:0:2,'',ansy:0:2);

end.

 


本文标签: 游泳池