Итак, вот проблема Иосифа на вики.Проблема, которая у меня есть, - это линейная вариация, но для ясности я переформулирую всю проблему.
(Числа = Натуральные числа)
Существует процесс, который устраняет числа вследующим образом:
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,6 являются safe
после этого шага, поскольку процесс будет выбирать все более и более высокие значения для исключения.
Итак, еще раз,учитывая K
как вы определяете, будет ли K
safe
?