问题背景
给定一个射击点的坐标 (x, y),我们需要计算该点到靶心 (0, 0) 的距离,并根据距离确定得分。靶心分为多个环,每个环对应不同的得分。
解决方案
这个问题可以通过以下几个步骤来解决:
-
计算距离:
- 使用欧几里得距离公式
distance = sqrt(x^2 + y^2)计算射击点到靶心的距离。
- 使用欧几里得距离公式
-
确定得分:
- 根据计算出的距离,判断射击点落在哪个环内,并返回相应的得分。
- 靶心的环从内到外依次得分为 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,超过 10 的距离得分为 0。
具体步骤
-
计算距离:
python 深色版本 distance = math.sqrt(x**2 + y**2) -
确定得分:
- 使用一系列的条件语句(
if-elif-else)来判断距离所在的范围,并返回相应的得分。
python 深色版本 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 - 使用一系列的条件语句(
代码实现
python
深色版本
import math
def solution(x: int, y: int) -> int:
# 计算射击点到靶心的距离
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) # 输出应为 10
print(solution(1, 1) == 9) # 输出应为 9
print(solution(0, 5) == 6) # 输出应为 6
print(solution(3, 4) == 6) # 输出应为 6