用python来解 PAT乙级1082射击比赛 -20-满分

题意很简单,输入运动员的编号和射出箭的坐标,对比他们到圆心的距离,输出最近的(冠军)和最远的(菜鸟)编号

直接用求三角形最长边的计算公式对每一个坐标求距离,先设两个常量分别是0和200(任意设置一个不可能达到的距离就可),然后遍历过程中替代他们,最后输出

代码如下:

n = int(input())
res = '0000 0000'#先定输出结果
max_dis = 0
min_dis = 200#设置两个边界的常量
# num_dis = dict()#也可以用字典
for i in range(n):
    num , x , y = input().split()
    dis = ((abs(int(x)))**2+(abs(int(y)))**2)**(1/2)#求距离
    #num_dis[dis] = num
    if dis > max_dis:
        res = res[:5] + num
        max_dis = dis#最长距离替换
    elif dis < min_dis:
        res = num + res[4:]
        min_dis = dis#最短距离替换
print(res)
#print(num_dis[min_dis]+' '+num_dis[max_dis])

提交结果:

用python来解 PAT乙级1082射击比赛 -20-满分