Asosiy qismga o‘tish
Algoritmlar

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

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

Xaydarov Zafar AlamovichPRO 29 Sentabr 2026 · 1 daqiqa o‘qish 26 6

Математический алгоритм Иосифа Флавия — это один из самых красивых примеров динамического программирования в истории науки.

Его главная фишка: мы вообще не моделируем круг и никого не убиваем по-настоящему. Вместо этого мы мысленно сжимаем задачу до 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)