小E的射击训练
1.问题描述
小E正在训练场进行射击练习,靶有10个环,靶心位于坐标(0, 0)。每个环对应不同的得分,靶心内(半径为1)得10分,依次向外的每个环分数减少1分。若射击点在某个半径为i的圆内,则得11-i分。如果射击点超出所有的环,则得0分。
根据给定的射击坐标(x, y),请计算小E的射击得分。
2.解题思路
2.1问题分析
- 输入:射击点的坐标
(x, y)。 - 输出:射击得分。
- 目标:根据射击点与靶心的距离,确定得分。
2.2基本思路
- 计算距离:使用欧几里得距离公式计算射击点
(x, y)到靶心(0, 0)的距离。 - 确定得分:根据距离确定得分。具体来说,如果距离在某个半径为
i的圆内,则得11 - i分。如果距离大于10,则得0分。
2.3示例
- 示例1:输入
x = 1, y = 0,输出10。 - 示例2:输入
x = 1, y = 1,输出9。 - 示例3:输入
x = 0, y = 5,输出6。 - 示例4:输入
x = 3, y = 4,输出6。
2.4代码
from math import ceil
def solution(x: int, y: int) -> int:
# write code here
distance=(x*x+y*y)**0.5
distance=ceil(distance)
# print(distance)
# print(ceil(distance))
res=11-distance
return res if res>0 else 0
if __name__ == '__main__':
print(solution(1, 0) == 10)
print(solution(1, 1) == 9)
print(solution(0, 5) == 6)
print(solution(3, 4) == 6)
3.代码详解
计算距离
distance = (x ** 2 + y ** 2) ** 0.5
使用欧几里得距离公式计算射击点 (x, y) 到靶心 (0, 0) 的距离。
向上取整
distance=ceil(distance)
使用 math.ceil() 函数将距离向上取整
计算得分
- 使用
11 - rounded_distance计算得分。 - 返回得分:如果得分大于0,则返回得分;否则返回0。
完美偶数计算
1.问题描述
小C定义了一个“完美偶数”。一个正整数 xx 被认为是完美偶数需要满足以下两个条件:
- xx 是偶数;
- xx 的值在区间 [l,r][l,r] 之间。
现在,小C有一个长度为 nn 的数组 aa,她想知道在这个数组中有多少个完美偶数。
2.解题思路
2.1问题分析
我们需要在一个数组中找出满足以下两个条件的元素数量:
- 该元素是偶数。
- 该元素在给定的区间 内。
2.2基本思路
- 遍历数组:遍历数组中的每一个元素。
- 检查条件:对于每一个元素,检查它是否是偶数,并且是否在区间 内。
- 计数:如果满足条件,则计数器加一。
- 返回结果:遍历结束后,返回计数器的值。
2.3示例
样例1:
输入:
n = 5, l = 3, r = 8, a = [1, 2, 6, 8, 7]输出:2
解释:
- 数组中的偶数有:2, 6, 8
- 在区间 内的偶数有:6, 8
- 因此,完美偶数的数量是 2。
样例2:
输入:
n = 4, l = 10, r = 20, a = [12, 15, 18, 9]输出:2
解释:
- 数组中的偶数有:12, 18
- 在区间 内的偶数有:12, 18
- 因此,完美偶数的数量是 2。
2.4代码
def solution(n: int, l: int, r: int, a: list) -> int:
# 初始化计数器
cnt = 0
# 遍历数组中的每一个元素
for x in a:
# 检查元素是否是偶数,并且是否在区间 [l, r] 内
if x % 2 == 0 and l <= x <= r:
# 如果满足条件,计数器加一
cnt += 1
# 返回计数器的值
return cnt
# 测试用例
if __name__ == '__main__':
print(solution(5, 3, 8, [1, 2, 6, 8, 7]) == 2)
print(solution(4, 10, 20, [12, 15, 18, 9]) == 2)
print(solution(3, 1, 10, [2, 4, 6]) == 3)
3.代码详解
-
函数定义:
solution(n: int, l: int, r: int, a: list) -> intn:数组的长度。l:区间的下界。r:区间的上界。a:输入的数组。
-
初始化计数器:
cnt = 0- 用于记录满足条件的元素数量。
-
遍历数组:
for x in a:- 对数组中的每一个元素进行检查。
-
检查条件:
if x % 2 == 0 and l <= x <= r:x % 2 == 0:检查元素是否是偶数。l <= x <= r:检查元素是否在区间 内。
-
计数器加一:
cnt += 1- 如果元素满足条件,计数器加一。
-
返回结果:
return cnt- 返回满足条件的元素数量。
至此,小E的射击训练+完美偶数计算题目解析完结撒花!