📌  相关文章
📜  国际空间研究组织 | ISRO CS 2007 |问题 18(1)

📅  最后修改于: 2023-12-03 15:23:02.327000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2007 | 问题 18

这是国际空间研究组织(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格式化字符串输出结果。