约瑟夫问题的迭代意义

约瑟夫问题的迭代意义

'''
我们想求在n个人时候的答案,n个人中第一个被去除的是索引为m%n的人
假设我们知道了n-1个人时候答案为x
那么n个人的时候的答案是==> m%n后面数到第x个的数即 (m%n+x)%n = (m+x) % n
假设m=3
当1个人时,答案为0

当2个人时,由于我们知道了1个人时的答案是0
2个人的安全位置在 (m%2 +0)%2 = (m +0) % 2 = 1

当3个人时,由于我们知道了2个人时的答案是 (m+0) % 2 = 1
3个人的安全位置为(m % 3 + 1 )%3 = 2

当4个人时,由于我们知道了3个人时的答案是 2
所以,4个人的安全位置为(m % 4 + 2) % 4 = 0

当5个人时,由于我们知道了4个人时的答案是 0
所以,5个人的安全位置为(m % 5 + 0) % 5 = 3


res = 0
for i in range(2,n+1):
	res = (m + res) %i
return res
'''
posted @ 2020-03-30 13:13  GhostAnt  阅读(197)  评论(0编辑  收藏  举报