Недавно я начал решать вопросы по онлайн-судьям. Я застрял в этом вопросе в SPOJ:
Вот алгоритм перетасовки N карт:
- Карты разбиты на K равных стопок, где K — множитель N.
- Нижние N / K карт принадлежат стопке 1 в том же порядке (таким образом, нижняя карта начальной стопки является нижней картой стопки 1).
- Следующие N/K карт снизу принадлежат стопке 2 и так далее.
- Теперь верхняя карта перетасованной стопки — это верхняя карта стопки 1. Следующая карта — это верхняя карта стопки 2,..., K-я карта перетасованной стопки — это верхняя карта стопки K. Тогда (K + 1)-я карта — это карта, которая сейчас находится наверху стопки 1, (K + 2)-я — это карта, которая сейчас находится наверху стопки 1. в верхней части стопки 2 и так далее.
Например, если N = 6 и K = 3, порядок колоды карт «ABCDEF» (сверху вниз) при однократном перемешивании изменится на «ECAFDB».
При заданных N и K какое наименьшее количество перетасовок необходимо, после чего стопка восстанавливается в своем первоначальном порядке?
Я пытался симулировать, но время истекло. Существует ли какое-нибудь математическое уравнение?