用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])
提交结果: