码迷,mamicode.com
首页 > 其他好文 > 详细

THE JOSEPHUS PROBLEM

时间:2016-05-25 00:05:53      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:

古代刑法中,josephus 被告知与其他人一起围成一个圈,每隔三个人杀掉一个,求在哪个位置可以求生。 
我们的问题是将数字围成一个圈,每隔一个数字去掉一个数字,数字从1开始,求最后剩下的数字的位置。

解决方案

当我们的数字是偶数的时候,从1开始,那么我们去掉的数字将是 2 4 6 8 … 当我们开始第二轮去掉数字的时候,将原来位置上面的数字按顺序重新从 1 开始编号,假设新一轮的位置编号为 n ,那么恢复为原来的位置就为 2*n-1。假定 J(2n) 为 2n 个数字围成的圈最后剩下的数字 ,那么由上面的解释可以得知公式: J(2n) = 2*J(n) -1

当数字为奇数的时候同理可得公式 : J(2n+1) = 2*J(n)+1

那么我们综上可知: 
J(1) = 1 
J(2n) = 2*J(n) -1 
J(2n+1) = 2*J(n) +1

解方程咯~~~

THE JOSEPHUS PROBLEM

标签:

原文地址:http://www.cnblogs.com/dongdongdongmian/p/5525259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!