所以这是维基上的约瑟夫斯问题。我遇到的问题是它的线性变化,但为了清楚起见,我将重申整个问题。
(数字=自然数)
有一个过程以下列方式消除数字:
i=2
while 1:
remove numbers that are *placed* at positions divisible by i
i+=1
你也会得到一个号码K
,你必须确认这个号码K
是否能在淘汰赛中幸存下来。
例如(假设索引从 0 开始)
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 ...
0,1,2,3,4,5,6,7,8, 9,10,11,12,13,14,15 ... (indices)
After step 1 ( elimination at i=2 )
2,4,6,8,10,12,14,16 ...
0,1,2,3, 4, 5, 6, 7 ... (indices)
After step 2 (elimination at i=3 )
2,4,6,10,12,16 ... ( 8 and 14 got removed cause they were at index 3 and 6 resp. )
0,1,2, 3, 4, 5 ... (indices)
正如我们所看到的,2、4、6safe
在此步骤之后,因为该过程将选择越来越高的值进行消除。
所以再一次,给定一个K
你如何确定 if K
will be safe
?