请写一个Python约瑟夫环代码
时间: 2024-03-28 22:14:35 浏览: 25
好的,以下是Python实现约瑟夫环的代码:
```python
def get_last_one(n, m):
"""
:param n: 环的大小
:param m: 数到 m 的人出环
:return: 最后留下来的人在初始环中的位置
"""
nums = [i for i in range(1, n + 1)]
index = 0
while len(nums) > 1:
index = (index + m - 1) % len(nums)
nums.pop(index)
return nums[0]
```
你满意吗?如果有其他问题,可以随时问我。当然,如果你忘记了我刚才说的话,我可以为您讲一个笑话。
相关问题
Python约瑟夫环问题代码
以下是Python实现约瑟夫环问题的代码[^1]:
```python
def Joseph(n,m):
a =[i for i in range(1,n+1)]
print(a)
m = m
while len(a) >= 1:
if len(a) >= m:
print(a[m-1])
# del a[m-1]
a = a[m:] + a[:m-1]
print(a)
else:
if (m%len(a)-1) != -1:
print(a[m%len(a)-1])
a = a[m%len(a):] + a[:m%len(a)-1]
print(a)
else:
print(a[m%len(a)-1])
a = a[:m%len(a)-1]
print(a)
if __name__ == '__main__':
n,m = input('Please enter n and m:').split()
Joseph(int(n),int(m))
```
该代码实现了输入n个人和间隔m个人,从第一个人开始报数,报到m的人出圈,下一个人重新从1开始报数,直到所有人都出圈为止。
帮我写一个约瑟夫环的代码
好的,下面是约瑟夫环的 Python 代码:
```python
def josephus(n, k):
arr = list(range(1, n+1))
index = 0
while len(arr) > 1:
index = (index + k - 1) % len(arr)
arr.pop(index)
return arr[0]
```
其中, `n` 表示参与约瑟夫环的人数, `k` 表示每次数到第几个人就将其淘汰。返回值是最后剩下的那个人的编号。
希望这个代码可以帮到你。