0, 1, … , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字。求出这个圈圈里剩下的最后一个数字。
# -*- coding:utf-8 -*-
class Solution:
def LastRemaining_Solution(self, n, m):
# write code here
# 没有小朋友时
if n < 1 or m < 1:
return -1
# 递推公式:n>2时,f(n,m)=(f(n-1,m)+m)%i
last = 0
for i in range(2, n + 1):
last = (last + m) % i
return last
本文探讨了经典的约瑟夫环问题,提供了一个简洁的Python解决方案。通过使用递推公式,文章详细解释了如何计算当n个数字排成一个圈,从数字0开始每次删除第m个数字时,圈中剩下的最后一个数字。


820

被折叠的 条评论
为什么被折叠?



