Ещё одно красивое решение задачи на Python, благодаря слайсам. К тому же, это одна из тех задач, где нужно сначала провести небольшое исследование: Простыми словами из математики в этой задаче требуется найти минимальный период. Ограничения на входные данные кажутся довольно большими. Так и есть, если вы захотели перебрать все варианты, и для каждого из них пройтись по массиву и убедиться, что элементы совпадают. Перебор можно сократить, заметив, что барабан сделал целое число оборотов. Ведь тогда получается, что количество секторов на барабане является делителем числа n - 1 (единичку вычитаем, потому что в последовательности записан сектор, на котором остановились, он же является и первым). Отлично, значит проходить по массиву надо будет лишь в том случае, если остаток от деления равен 0. Но вдруг и этого будет недостаточно? В таком случае, мы можем быстро накидать функцию, которая вычисляет количество делителей у числа: И вызвать её для всех чисел от 1 до 30000: Да, придётся немного