约瑟夫环问题
“”"
有15个基督徒和15个非基督徒,
大家围成圈,
由某个人开始从1报数,报到9的人扔到海里面;
他后面的人接着从1开始报数,报到9的人扔到海里面,直到扔掉15个人
最后15个基督徒都幸免于难,为啥
“”"
def main():
persons = [True] * 30
counter, index, number = 0, 0, 0
while counter < 15:
if persons[index]:
number += 1
if number == 9:
persons[index] = False
counter += 1
number = 0
index += 1
index %= 30
for person in persons:
print('基' if person else '非', end='||')
if __name__ == '__main__':
main()
找出座位号
def main(n, k):
# n代表总人数,k代表报数的数字
List = list(range(1, n + 1))
index = 0
while List:
temp = List.pop(0)
index += 1
if index == k:
index = 0
continue
List.append(temp)
if len(List) == 15:
List.sort()
print(List)
break
if __name__ == '__main__':
main(30, 9)