测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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分


上一题 下一题