记录PTA编程题练习7-28 猴子选大王——Python3实现

题目描述:

        一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

输入格式:

        输入在一行中给一个正整数N(≤1000)。

输出格式:

        在一行中输出当选猴王的编号。

代码实现:

        采用模拟队列的方法实现。

N = int(input())
ls = [i for i in range(1,N+1)]  #创建列表模拟队列
count = 1  #报数从1开始
while len(ls) > 1:
    if count % 3 != 0:  #队首不是指定报数,弹出后再重新入队
        ls.append(ls.pop(0))
    else:  #队首为指定报数,直接弹出
        ls.pop(0)
    count += 1
print(ls[0])

你可能感兴趣的:(python)