eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

И снова ханойские башни

И снова ханойские башни

Всем наверное известна головоломка "Ханойские башни". В головоломке имеются три стержня и \textbf{N} дисков различного радиуса. Изначально все диски расположены на первом стержне, упорядоченные по радиусу - диск с наибольшим радиусом расположен внизу, а с наименьшим вверху. За один ход разрешается взять верхний диск с любого стержня и переложить его на другой, следуя единственному правилу: нельзя класть больший диск на меньший. В задаче необходимо переложить все диски на последний стержень, совершив наименьшее количество перекладываний. Легенда гласит, что где-то в Тибете есть монастырь, в котором монахи неустанно передвигают диски со стержня на стержень, решая задачу для \textbf{64} дисков. Легенда говорит, что когда работа будет закончена, то настанет конец света. Поскольку известно, что для решения задачи достаточно совершить \textbf{2^N-1} перекладываний, небольшие вычисления показывают, что мир еще некоторое время побудет в безопасности. Однако недавние открытия археологов показали, что дела могут оказаться намного хуже. В манускрипте, найденном в Тибете, утверждается, что монахи решали задачу не на \textbf{3}-х, но на \textbf{M} стержнях. Это действительно оказалось проблемой, так как с увеличением числа стержней количество перекладываний согласно описанным правилам резко уменьшается. Найдите количество перекладываний, которое необходимо совершить для перекладывания \textbf{N} дисков с первого стержня на последний, если в задаче присутствуют \textbf{M} стержней, а также укажите порядок перекладывания дисков. \InputFile Входные данные содержат два числа \textbf{N} и \textbf{M} (\textbf{1} ≤ \textbf{N} ≤ \textbf{64}, \textbf{4} ≤ \textbf{M} ≤ \textbf{65}). \OutputFile В первой строке выведите количество перекладываний L для решения задачи. Следующие \textbf{L} строк должны содержать сами перекладывания. Каждая строка имеет вид \textbf{move from to} если диск перекладывается на пустой стержень или \textbf{move from to atop} если диск кладется сверху на другой диск. Радиусы дисков изменяются от \textbf{1} до \textbf{N}, стержни пронумерованы от \textbf{1} до \textbf{M}.
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
5 4
Выходные данные #1
13
move 1 from 1 to 3
move 2 from 1 to 2
move 1 from 3 to 2 atop 2
move 3 from 1 to 4
move 4 from 1 to 3
move 3 from 4 to 3 atop 4
move 5 from 1 to 4
move 3 from 3 to 1
move 4 from 3 to 4 atop 5
move 3 from 1 to 4 atop 4
move 1 from 2 to 1
move 2 from 2 to 4 atop 3
move 1 from 1 to 4 atop 2
Автор Андрей Станкевич
Источник Petrozavodsk Summer Trainings 2003, 2003-08-23