现有n个人依次围成一圈玩游戏,从第1个人开始报数,数到第m个人出局,然后从出局的下一个人开始报数,数到第m个人又出局,...,如此反复到只剩下最后一个是胜利者。设n个人的编号分别为1,2,...,n,打印出局的顺序。 根据上述算法思想,补全下列代码。 输入输出示例:当n=10,m=4,输出如下: 出局的人是: 4 出局的人是: 8 出局的人是: 2 出局的人是: 7 出局的人是: 3 出局的人是: 10 出局的人是: 9 出局的人是: 1 出局的人是: 6 最后胜利者是: 5 def fun(n,k): L = list( ① ) if n == 1: return else: x = 0 for i in ② x = ③ - 1 print('出局的人是:',L[x]) del L[x] if x < 0: x = 0 print('最后胜利者是:', ④ ) fun(10,4)
正确答案:补全答案:①range(1,n+1) ②range(n-1) ③(x+k)%len(L) ④L[0]。核心:约瑟夫环,按k报数删人,剩最后一人为胜者。
试卷来源:202103 青少年软件编程等级考试Python四级真题