Python 有17个人围成一圈(编号为:0 ~ 16),从第0号的人开始从1开始报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一个人为止 。问此人原来的位置是什么号码

Python 有17个人围成一圈(编号为:0 ~ 16),从第0号的人开始从1开始报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一个人为止。问此人原来的位置是什么号码

Python代码实现

def test(ren,count=0):
    a = len(ren)
    b = count
    for i in ren:
        b += 1
        if len(ren) == 1:
            return ren
        if b % 3 == 0:
            b += 1
            ren.remove(i)
    print(ren)
    count += a
    return test(ren,count)

ren = list(range(17))
test(ren)

运行结果

[0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15, 16]
[1, 3, 6, 7, 10, 12, 15, 16]
[3, 6, 10, 12, 16]
[3, 10, 12]
[3, 10]
[3, 10]
[10]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值