def solution(x: int, y: int) -> int:
# 计算射击点到靶心的距离
distance = (x * x + y * y) ** 0.5
# 如果距离大于10,超出所有环,得0分
if distance > 10:
return 0
# 根据距离确定所在环数
# 使用向上取整,因为距离正好在圆上时应该算作外环
ring = int(distance + 0.99999) # 使用这种方式处理浮点数精度问题
# 计算得分:11减去环数
score = 11 - ring
return score
if __name__ == '__main__':
# 测试样例
print(solution(1, 0) == 10) # True,距离1,在第1环内
print(solution(1, 1) == 9) # True,距离√2≈1.414,在第2环内
print(solution(0, 5) == 6) # True,距离5,在第5环内
print(solution(3, 4) == 6) # True,距离5,在第5环内
# 额外测试用例
print(solution(0, 0) == 10) # 靶心
print(solution(10, 0) == 1) # 第10环边界
print(solution(7, 7) == 1) # 距离约9.899,在第10环内
print(solution(8, 8) == 0) # 距离约11.314,超出所有环