SPOJ:Card Shuffling

Недавно я начал решать вопросы по онлайн-судьям. Я застрял в этом вопросе в SPOJ:

Вот алгоритм перетасовки N карт:

  1. Карты разбиты на K равных стопок, где K — множитель N.
  2. Нижние N / K карт принадлежат стопке 1 в том же порядке (таким образом, нижняя карта начальной стопки является нижней картой стопки 1).
  3. Следующие N/K карт снизу принадлежат стопке 2 и так далее.
  4. Теперь верхняя карта перетасованной стопки — это верхняя карта стопки 1. Следующая карта — это верхняя карта стопки 2,..., K-я карта перетасованной стопки — это верхняя карта стопки K. Тогда (K + 1)-я карта — это карта, которая сейчас находится наверху стопки 1, (K + 2)-я — это карта, которая сейчас находится наверху стопки 1. в верхней части стопки 2 и так далее.

Например, если N = 6 и K = 3, порядок колоды карт «ABCDEF» (сверху вниз) при однократном перемешивании изменится на «ECAFDB».

При заданных N и K какое наименьшее количество перетасовок необходимо, после чего стопка восстанавливается в своем первоначальном порядке?


Я пытался симулировать, но время истекло. Существует ли какое-нибудь математическое уравнение?

7
задан Zero Piraeus 22 January 2015 в 00:00
поделиться