给n个学生编号1~n,按顺序围成一圈,按1~3报数,凡报到3者出列,从1开始报数,直到最后剩下一个人,计算剩下这个人是第几号学生。
直接上代码吧
第一种方法:
num = int(input("请输入学生人数:"))
list = [i for i in range(1,num+1)]
index = 0
# print(list)
while 1:
temp = list.pop(0)
index += 1
if index == 3:
index = 0
continue
list.append(temp)
if len(list) == 1:
break
print("剩下学生的编号:",end='')
print(list)
第二种方法 :
n = int(input("请输入学生人数:"))
a = [1 for i in range(1,n+1)]
# print(a)
i = 0
s = 0
while True:
s = s + a[i]
if s == 3:
a[i] = 0
s = 0
n = n-1
if n == 1:
break
i = i + 1
if i == len(a):
i = 0
print("剩下学生的编号:",end='')
print(a.index(1) + 1)
第三种方法:
n = int(input("请输入学生人数:"))
a = [i for i in range(1,n+1)]
while 1:
a.append(a[0])
a.append(a[1])
a.pop(0)
a.pop(0)
a.pop(0)
if len(a) == 1:
break
print("剩下学生的编号:", end='')
print(a)
第4种方法:
s = int(input("请输入有多少个学生:"))
a = [i for i in range(1,s+1)]
l = 0
while len(a) > 1:
i = 0
while i < len(a):
l += 1
if l == 3:
del a[i]
l = 0
else:
i += 1
print("剩下学生的编号:", end='')
print(a)
运行结果都是一样的,但是效率就不大一样了。。。