PTA的Python练习题(十七)
第4章-18 猴子选大王
我的思路是两层循环,count计算如果取余等于3就从数组里面删除,一开始以为挺对的(代码如下):
a=eval(input())
s=[]
count=0
flag=0
for i in range(1,a+1):
s.append(i)
#print(s)
while(flag <= 0):
count = 0
c = len(s)
for i in s:
count=count+1
if count%3==0:
s.remove(i)
#print(s)
if count==c:
break
if c==1:
print(s[0])
flag=1
break
运行以后进入死循环,因为数组最后会剩下两个数,无法结束,而且那两个数是固定的,1和2
思路错就错在围成一圈
参考代码:
n=int(input())
monkey=[]
timer=0
count=0
if(n>0 and n<=1000):
for i in range(1,n+1):
monkey.append(i)
while(len(monkey)>1):
timer+=1
count+=1
if(count>len(monkey)):
count=1
if(timer==3):
timer=0
monkey.pop(count-1)
count-=1
print(monkey[0])
想了很久没有想通,明早还有课,有空重新来写一下
[Sign]做不出ctf题的时候很痛苦,你只能眼睁睁看着其他人领先你