这是华为公司一道面试题
10个人围一圈或占一排,从一个人开始数1,2,3,数到3 的人蹲下不在参加数数,请最后一人是第几个人(或求下标)。
法1:这是我自己用数学思维加Python基础(while True+%+列表位移一位和二位+a=[i for i in a if i not in b] 等)所做,过程复杂繁多,不推荐,但能巩固基础知识
R=int(input("请输入人数:"))
a=[x for x in range(R)]
while True:
if len(a)==2:
print(a[1])
break
else:
if len(a)%3==0:
n=len(a)//3
b=[]
for i in range(n):
b.append(a[2+3*i])
a=[i for i in a if i not in b]
elif len(a)%3==1:
n=len(a)//3
b=[]
for i in range(n):
b.append(a[2+3*i])
a = [i for i in a if i not in b]
t=a[len(a)-1]
for j in range(1,len(a)):
a[len(a)-j]=a[len(a)-j-1]
a[0]=t
#