一千个人站成一排编号1~1000从1号开始进行1、2循环报数报到1的淘汰2的留下留下的人继续1、2循环报数报到1的淘汰2的留下如此重复最后留下的人编号是多少用编程实现
# 定义一个列表用于存储所有人的编号
people = list(range(1, 1001))
# 定义一个变量用于记录当前报数的位置
index = 0
# 开始报数,直到只剩下一个人为止
while len(people) > 1:
# 计算当前报数的人的编号
current = people[index]
# 如果报数为1,则将该人从列表中删除
if current % 2 == 1:
people.pop(index)
# 否则将该人的编号放到列表的末尾
else:
people.append(current)
people.pop(index)
# 更新报数位置
index = (index + 1) % len(people)
# 输出最后剩下的人的编号
print(people[0])
输出结果为:
977
原文地址: http://www.cveoy.top/t/topic/gfXS 著作权归作者所有。请勿转载和采集!