笔记
-
问题理解:
- 靶心位于坐标
(0, 0),半径为1的圆内得10分,依次向外每个环分数减少1分。 - 如果射击点在某个半径为
i的圆内,则得11 - i分。 - 如果射击点超出所有的环,则得0分。
- 靶心位于坐标
-
关键点:
- 距离计算:使用欧几里得距离公式计算射击点
(x, y)到靶心(0, 0)的距离:distance = sqrt(x^2 + y^2)。 - 得分判断:根据距离判断射击点在哪个环内,得分规则如下:
- 如果
distance <= 1,得分是10分。 - 如果
1 < distance <= 2,得分是9分。 - 以此类推,直到
distance > 10,得分是0分。
- 如果
- 距离计算:使用欧几里得距离公式计算射击点
-
代码实现:
- 使用
math.sqrt计算距离。 - 使用一系列
if-elif-else语句来判断得分。
- 使用
代码框架
import math
def solution(x: int, y: int) -> int:
# 计算射击点 (x, y) 到靶心 (0, 0) 的距离
distance = math.sqrt(x**2 + y**2)
# 根据距离判断得分
if distance <= 1:
return 10
elif distance <= 2:
return 9
elif distance <= 3:
return 8
elif distance <= 4:
return 7
elif distance <= 5:
return 6
elif distance <= 6:
return 5
elif distance <= 7:
return 4
elif distance <= 8:
return 3
elif distance <= 9:
return 2
elif distance <= 10:
return 1
else:
return 0
if __name__ == '__main__':
print(solution(1, 0) == 10)
print(solution(1, 1) == 9)
print(solution(0, 5) == 6)
print(solution(3, 4) == 6)