C++在右侧编辑器补充代码,输入一个正整数n,输出留下来的人的编号 测试说明 n个人围成一圈,按顺序从1到n编号。从第一个人开始报数1、2、3,报到3的人退出圈子,下一个人从1开始重新报数,报到3的人退出圈子。如此进行下去,直到留下最后一个人。当给定一个正整数n时,请问留下来的人的编号是多少? 编程要求 根据提示,
时间: 2023-06-08 19:04:32 浏览: 132
请在右侧编辑器补充完整函数 solve。
提示1:使用列表来模拟这个环形。
提示2:注意 list.pop() 和 list.pop) 的区别。
提示3:需要注意的,报数是从 1 开始的,不是 0。
提示4:注意列表的下标是从 0 开始的,需要进行适当的调整。
def solve(n):
people = [i+1 for i in range(n)] # 初始化人的编号列表
idx = 0 # 当前报数的人
while len(people) > 1: # 只要人数大于1,就循环
idx = (idx + 2) % len(people) # 下一个报数的人的下标
people.pop(idx) # 报到3的人退出圈子
return people[0] # 返回剩下的最后一个人的编号
阅读全文