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

Одне перекладування Ханойських веж

Одне перекладування Ханойських веж

Тут ми рзглянемо класичну задачу про Ханойські вежі. У ній є три стержні та набір круглих дисків. Нехай кількість дисків дорівнює \textbf{n}. Диски мають різний розмір, ніякі два з яких не мають одинакового радіусу. Основне правило полягає у тому, що заборонено класти більший диск на менший. Пронумеруємо диски від \textbf{1} (найменший) до \textbf{n} (найбільший), стержні будемо називати \textbf{A}, \textbf{B} та \textbf{C}. Спочатку усі диски розміщено на стержні \textbf{A}. Мета задачі полягає у перенесенні їх на стержень \textbf{C}, послідовно перекладаючи їх один за одним, ніколи не кладучи більший диск на менший. Існує добре відомий розв'язок, який рекурсивно переміщує \textbf{n--1} диск з \textbf{A} на \textbf{B}, потім переміщує один диск з \textbf{A} на \textbf{C}, після чого рекурсивно переміщує \textbf{n -- 1} диск з \textbf{B} на \textbf{C}. Псевдокод рекурсивного розв'язання задачі про Ханойські вежі має вигляд: \textbf{move(num_disks, from_post, spare_post, to_post)} \textbf{if (num_disks == 0)} \textbf{return} \textbf{move(num_disks -- 1, from_post, to_post, spare_post)} \textbf{print ("Move disk ", num_disks, " from ", from_post, " to ", to_post)} \textbf{move(num_disks -- 1, spare_post, from_post, to_post)} У цій задачі необхідно визначити \textbf{k}-те перекладування за заданими \textbf{k} та \textbf{n}. \InputFile Кожен рядок містить два цілих числа \textbf{k} та \textbf{n}. В кінці вхідних даних розміщено рядок з двух нулів. Вхідні значення коректні, \textbf{k} та \textbf{n} - додатні цілі числа, \textbf{k} менше \textbf{2^n}, тому \textbf{k}-те перекладування існує, \textbf{n} не більше \textbf{60}, тому відповідь поміщається у \textbf{64}-бітовий цілочисельний тип. \OutputFile Вивести шукане \textbf{k}-те перекладування, здійснене алгоритмом. Формат виведення повинен бути наступним: "\textbf{Case}", один пропуск, номер тесту, двокрапка, один пропуск, і відповідь для поточного тесту у форматі: номер диску, ім'я стержня \textbf{from_post} та ім'я стержня \textbf{to_post}, відокремлюючи їх одним пропуском. Пропуски у кінці рядка не виводити.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
1 3
5 3
8 4
0 0
Вихідні дані #1
Case 1: 1 A C
Case 2: 1 B A
Case 3: 4 A C
Джерело ACM ICPC NCNA Programming Contest - November 7, 2013