问题描述:
古代刑法中,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
解方程咯~~~
时间: 2024-10-10 04:23:06