Python基础题目——约瑟夫环

有15个人围成一圈,顺序编号,从第一个人开始报数,报到3的人退出圈子,求最后一个是开始时的第几号?

题目给出了具体的数值,若是m,n值不定,可增加输入

​
def baoshu ( n, m ):
    # 初始化一个列表表示所有人,值为他们的编号
    people = list ( range (1, n + 1 ))
    
    # 索引用于跟踪当前要数的人
    index = 0
    
    # 不断移除人,直到只剩下一个人
    while len ( people ) > 1:
        # 计算下一个要移除的人的索引
        index = ( index + m - 1 ) % len ( people )
        # 移除该人
        people .pop ( index )
    
    # 返回最后剩下的那个人的编号
    return people [0]

# 调用函数,n=15,m=3
n = 15
m = 3
last_person = baoshu ( n, m )
print ( last_person )

​

输出是5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值