写出下面的程序,n个数字 1, 2, 3,····,n$形成一个圆圈,从数字 1 开始,每次从这个圆圈中删除第 m 个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第 m个数字。求出在这个圆圈中剩下的最后一个数字。
时间: 2024-05-08 12:18:47 浏览: 94
以下是可以解决您问题的 Python 代码:
```
def find_last_number(n, m):
if n < 1 or m < 1:
return None
nums = [i for i in range(1, n+1)]
idx = 0
while len(nums) > 1:
idx = (idx + m - 1) % len(nums)
nums.pop(idx)
return nums[0]
# 应用举例
print(find_last_number(7, 3)) # 输出 4
```
解释:使用一个列表 `nums` 存储数字 1 到 n,并使用变量 `idx` 记录当前要删除的数字的下标。每次计算要删除的数字下标时,通过求余数来实现循环删除。最后剩余的一个数字即为结果。
阅读全文