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.
本文标签: 游泳池
版权声明:本文标题:游泳池 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687944935h160389.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论