ИОСИФ ФЛАВИЙ Задача
Одним из талантов, которыми обладал Иосиф Флавий, были математические способности, которые, по легенде, спасли ему жизнь. Когда римляне поймали в ловушку 40 последователей Флавия и его самого, они заключили договор о смерти, по которому римляне не получат их, а скорее умрут. Они взяли смертельные счета в кругу солдат. Каждый третий был убит. Счет продолжался до тех пор, пока не остался один человек. Именно мужчина занял в этом круге 31-е место. Да, это был Флавий. У него было другое мнение о жизни, смерти и своем особом назначении на этой войне. Ниже вы видите инструмент, который может рассчитать для вас любое количество чисел для любого выбранного числа и для любого оставшегося числа (меньше общего, конечно). Только помните, Флавий быстро решил такую задачу в уме без какой-либо компьютерной программы.
Задача: найти местонахождение (индекс) единственного оставшегося в живых человека.
Вход.
Первая строка содержит N и M: 1<=N<=500, 1<=k<=100.
Выход:
Местонахождение (индекс) единственного оставшегося в живых человека.
Пример ввода:
10 3
Пример вывода:
4
Answers & Comments
N, M = map(int, input().split())
List = [i for i in range(1, N + 1)]
def recursive_de(List, M, k, index):
if len(List) == 1:
return print(*List)
else:
if index >= len(List):
index = index - len(List)
if k == 3:
List.pop(index)
k = 1
return recursive_de(List, M, k, index)
else:
return recursive_de(List, M, k + 1, index + 1)
recursive_de(List, M, 1, 0)