人力资源部同事小V设计了一个方法为每个人进行排序并分配最终的工号,具体规则是:
将N(N<10000)个人排成一排,从第1个人开始报数;如果报数是M的倍数就出列,报到队尾后则回到对头继续报, 直到所有人都出列...= 3
while len(a) >= n:
if n-2 >= 0:
a = a[n:] + a[:n-1]
print(sorted(a))
跟这题非常类似,不同之处是需要收集出列的小伙伴顺序,最后几个小伙伴需继续报数...7, 8, 14]
[5, 10, 15, 20, 6, 12, 18, 4, 13, 1, 9, 19, 11, 3, 17, 16]
最后还有4个人将继续报数,
人数小于n的情况
[2,7,8,14...]继续循环[2,7,8,14] 此时 2 出列,剩余[7,8,14]
[7,8,14]继续循环[7,8,14],此时 8 出列,剩余[7,14]
[14, 7]继续循环[14,7],此时14出列,剩余...while len(a) >= m:
new_arry.append(a[m-1])
a = a[m:] + a[:m-1]print(a) # 多余的
# 2.人数小于n
while len(a)