Python题目描述:
n个小朋友做游戏,编号从1到n。他们按编号大小从小到大依次顺时针围成一 个圈,第一个小朋友开始报m,第二个小朋友开始报m-1, 第m个小朋友开始报1,顺时针方向报数减1,报1的人会离开,下一个小朋友继续报m。直到只剩一个小朋友。
输入:两个正整数n,m(均不超过1000)输出:最后一个小朋友编号
下面是一个 Python 程序的示例,用来模拟 n 个小朋友做游戏的情况,编号从 1 到 n 依次顺时针围成一圈,第一个小朋友开始报 m,第二个小朋友开始报 m-1,第 m 个小朋友开始报 1,顺时针方向报数减 1,报 1 的人会离开,下一个小朋友继续报 m。直到只剩一个小朋友。
首先读入小朋友的数量 n 和报数的数字 m。
然后创建一个空列表,用来存储小朋友的编号。
使用一个 for 循环,按照编号大小从小到大
然后,使用一个 while 循环,模拟游戏的过程。循环条件为 children 列表的长度大于 1。
在循环体内,首先计算当前报数的小朋友的下标。这里使用 (m - 1) % len(children) 的方式计算。
然后,将当前报数的小朋友从列表中删除。使用 pop() 函数删除列表中的指定下标的元素。
接着,重新计算报数的数字。这里可以将 m 减去 1。
循环结束后,就会剩下最后一个小朋友。
最后,输出最后一个小朋友的编号。使用 children 列表的第一个元素(即下标为 0 的元素)。