A26004. 无人机社团小明参加了一个无人机社团,现有n架无人机,编号为1, 2, 3, ..., n,依照规则出队执行任务。规则:从队列中按顺序出队第 k 架无人机,直到剩下最后一架无人机时,它将完成最终任务。现在需要计算第m架被出队的无人机的编号,请补充完成该程序。def solve(n, k, m): if ① : #递归终止条件:当排除第1架时 return (n + k - 1) % ② #计算首轮…
填空题
较难
知识点
题目描述
无人机社团
小明参加了一个无人机社团,现有n架无人机,编号为1, 2, 3, ..., n,依照规则出队执行任务。规则:从队列中按顺序出队第 k 架无人机,直到剩下最后一架无人机时,它将完成最终任务。现在需要计算第m架被出队的无人机的编号,请补充完成该程序。
def solve(n, k, m):
if ① : #递归终止条件:当排除第1架时
return (n + k - 1) % ② #计算首轮被排除的位置
else:
return (solve( ③ ) + k) % n
n, k, m = map(int, input().split())
print( ④ )参考答案
def solve(n, k, m):
if m == 1: # ① 递归终止条件:当排除第1架时
return (n + k - 1) % n # ② 计算首轮被排除的位置
else:
return (solve(n-1, k, m-1) + k) % n # ③ 递归缩小问题规模
n, k, m = map(int, input().split())
print(solve(n, k, m) + 1) # ④ 调整索引偏移(从1开始)答案解析
评分标准:
(1)m == 1 (或等效答案);(2分)
(2)n (或等效答案);(2分)
(3)n-1, k, m-1(或等效答案);(2分)
(4)solve(n, k, m) + 1(或等效答案)。(2分)说明:solve(n, k, m) 给1分
上一题
下一题