Математический алгоритм Иосифа Флавия
Математический алгоритм Иосифа Флавия и динамические примеры

Математический алгоритм Иосифа Флавия — это один из самых красивых примеров динамического программирования в истории науки.
Его главная фишка: мы вообще не моделируем круг и никого не убиваем по-настоящему. Вместо этого мы мысленно сжимаем задачу до 1 выжившего человека, а затем делаем «перемотку назад» и вычисляем, под каким номером этот победитель стоял в самом начале.
Чтобы решать такие задачки существует формула
J(1) = 0
J(n) = (J(n−1) + 3) mod n
К примеру если наш n = 100 и k = 7
s = int(input()) + 1
j = [0] * s
for n in range(2, s):
j[n] = (j[n-1]+3) % n
print(j[s-1] + 1)