📅  最后修改于: 2023-12-03 15:23:02.327000             🧑  作者: Mango
这是国际空间研究组织(ISRO)2007年计算机科学考试中的第18题。
在一个2D平面上,有一些点被给定,你需要找到离(0,0)最远的点,并输出其距离。
第一行包含一个整数 T,表示测试数据的组数。
对于每组测试数据:
第一行包含一个整数 n,表示2D平面上的点的数量。
接下来的 n 行每行包含两个整数 x, y,表示一个点的坐标。
对于每组测试数据,输出一个实数,表示离(0,0)最远的点与原点的距离。答案精确到小数点后两位。
2
2
1 1
2 2
2
-2 2
2 -2
2.83
2.83
这是一个经典的几何题,我们只需要求出所有点到原点的欧几里得距离,然后输出其中最大值即可。
具体实现时,我们可以用一个循环遍历所有点,然后对每个点求出其到原点的距离,并比较该距离与当前已知的最大距离大小,如果更大则更新最大距离值。最后输出最大距离即可。
需要注意的是,所有点的坐标可能为负数,因此我们需要在计算距离时应该先取绝对值再进行运算。最后输出结果时,需要保留两位小数。
以下是该题的Python实现代码:
def distance(x, y):
return (x ** 2 + y ** 2) ** 0.5
t = int(input())
for _ in range(t):
n = int(input())
dmax = 0
for i in range(n):
x, y = map(int, input().split())
d = distance(abs(x), abs(y))
dmax = max(dmax, d)
print("{:.2f}".format(dmax))
以上代码中,distance()
函数用于计算两个点间的欧几里得距离,t
表示测试数据组数,n
表示2D平面上的点的数量,dmax
表示当前已知的所有点距离原点的最大值。在程序中,我们按照上述思路来实现逻辑即可。最后,我们通过Python格式化字符串输出结果。