n个人(以编号0,1,2,3...n-1分别表示)围坐在一张圆桌周围。从编号为0的人开始报数1,数到m的那个人出列;
他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。按照顺序出列的人的编号列表
1 def ysf(m,l): 2 global nlist,k,plist 3 if nlist == []: # 全部出列退出递归 4 return 0 5 6 if l>=m: # 将出列人员按顺序编入plist 7 plist.append(nlist[m-1]) 8 ysf(m+k,l) 9 else: # 循环回列表,并将出列人编号移出nlist 10 for i in range(len(plist)): 11 if plist[i] in nlist: 12 nlist.remove(plist[i]) 13 m = m-l 14 ysf(m,len(nlist)) 15 16 def main(n): 17 global nlist,plist,k 18 nlist = list(range(n)) 19 plist = [] 20 k = int(input()) 21 ysf(k,len(nlist)) 22 print(plist) 23 24 main(int(input()))