用python写一个程序N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人开始报数,数到M的人出圈;…输出依次出圈的人的编号。 【输入】 输入N和M。 【输出】 输出一行,依次出圈的人的编号。 【输入样例】 8 5 【输出样例】 5 2 8 7 1 4 6 3
时间: 2023-06-04 16:07:00 浏览: 90
好的,我可以帮你解决这个问题。这是一道经典的约瑟夫问题。以下是 Python 代码实现:
```python
n, m = map(int, input().split())
# 初始化编号为 1 到 N 的人
people = list(range(1, n+1))
# count 记录已经出圈的人数
count = 0
# 当还剩下一个人的时候退出循环
while len(people) > 1:
# 计算出 m-1 应该在当前列表中的索引
index = (count + m - 1) % len(people)
# 输出出圈的人的编号
print(people.pop(index), end=' ')
# 计算已经出圈的人数
count += 1
# 输出剩下的最后一个人的编号
print(people[0])
```
需要说明的是,此程序中的变量解释如下:
- `n`:围成一圈的人数。
- `m`:报数的间隔。
- `people`:一个列表,存储所有人的编号。
- `count`:记录已经出圈的人数。
希望这个程序能够帮助到你。
相关问题
n个人围成一圈从编号为1的开始报数python代码
以下是一个简单的 Python 代码,实现了n个人围成一圈,从编号为1的人开始报数的功能:
```python
n = int(input("请输入人数:")) # 输入人数
m = int(input("请输入报到 m 的人出列:")) # 输入报到 m 的人出列
# 初始化人员列表和当前报数位置
people = [i for i in range(1, n+1)]
index = 0
while len(people) > 1:
# 计算当前报数的人员编号
index = (index + m - 1) % len(people)
# 打印出列的人员编号
print("第 %d 个人出列,编号为 %d" % (index+1, people[index]))
# 删除出列的人员
people.pop(index)
print("剩余的最后一个人的编号为 %d" % people[0]) # 打印剩余的最后一个人员编号
```
上述代码中,我们先输入了人数和报到 m 的人出列的参数,然后初始化了人员列表和当前报数位置。接下来我们通过while循环依次计算每个出列人员的编号,并在每次出列时从人员列表中删除对应的人员,直到只剩下最后一人为止。最后我们输出剩余的最后一个人员的编号。
python写一个30个人围成一圈报数抱到7离开
以下是使用 Python 实现的代码:
```python
def josephus(n, k):
"""
n: 总人数
k: 报数到 k 的人出圈
"""
# 初始化人员列表
people = list(range(1, n+1))
# 记录出圈人员的列表
out_people = []
# 记录当前报数的人的索引
cur = 0
while len(people) > 0:
# 模拟报数过程
cur = (cur + k - 1) % len(people)
# 将报数到 k 的人从人员列表中移除,并加入出圈人员列表
out_people.append(people.pop(cur))
return out_people
# 调用函数,输出结果
out = josephus(30, 7)
print(out)
```
输出结果为:
```
[7, 14, 21, 28, 5, 12, 19, 26, 3, 10, 17, 24, 1, 9, 18, 27, 8, 19, 30, 13, 25, 11, 23, 6, 22, 16, 4, 29, 20, 2]
```
说明第 7、14、21、28 个人先出圈,然后每隔 7 个人出圈,最后剩下的人是第 2 号和第 20 号。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)