刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

36.无人机社团
小明参加了一个无人机社团,现有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( ④ )

使用微信搜索喵呜刷题,轻松应对考试!

答案:

解析:

这是一个递归求解的问题。首先,理解题目的需求是找到第m架被出队的无人机的编号。按照规则,每次从队列中按顺序出队第k架无人机。我们需要通过递归的方式模拟这个过程。

对于递归终止条件,当只剩下最后一架无人机时,也就是n==1时,这架无人机会完成最终任务,因此递归终止条件为① n == 1。此时返回的是首轮被排除的位置,即(n + k - 1) % n,所以②处填n。

在递归过程中,每次递归调用时,相当于跳过了k-1架无人机,所以实际上是在处理剩下的无人机数量n-1的情况。因此③处填n - 1。最后,调用solve函数并打印返回值,得到第m架被出队的无人机的编号,所以④处填solve(n, k, m)的返回值。

创作类型:
原创

本文链接:36.无人机社团小明参加了一个无人机社团,现有n架无人机,编号为1, 2, 3, ..., n,依照

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share