Эники Беники ели вареники
Эники Бэники клёц!
Вышел зеленый матрос.
Знакомо?
Пока я крапаю длинную статью на тему как научиться НЕ делать все самому, решил набросать коротенькую статейку/задачку. Задачка аналогично такой, которая дается на олимпиадах по программированию.
Слегка формализированные правила считалочки.
1) Пусть у нас есть N человек
2) И у нас есть считалка длинной в M слов.
3) Начинаем считать с первого человека, по одному слову на человека.
4) Человек на котором считалка закончилась выбывает.
5) Считалка продолжает считаться с следующего после выбывшего, повторяя пункт 4 и 5.
6) Оставшийся последним человек – выигрывает.
Задача:
Написать программу, которая считает порядковый номер человека который выигрывает. Входные данные N и M.
5 баллов – программа может рассчитать выигрывающего при N и M < 20.
10 баллов – программа может рассчитать при N < 20, а M порядка 1 триллиона (не фига себе считалочка), за разумное время.
25 баллов – программа может рассчитать при N порядка 1 миллиарда, M < 20, за разумное время.
50 баллов – программа может рассчитать при N и M порядка триллиона.
Если вы знаете/придумали решение на 50 баллов, прошу сразу его не бросать в комментарии, а просто написать что вы его знаете (чтобы дать остальным подумать).
Остальные решения вполне welcome в комментариях
Увы, приза по рукой нет, да и как я его доставлю в произвольную точку земли тоже непонятно. Но, всем решившим большое уважение и почет.
P.S. Как оказалось, задача классическая (просто я с ней не сталкивался). На момент написания статьи, я знал решение на 5 и 10 баллов, примерно имел идею на 25 баллов и не знал, как решить на 50 баллов.



