1. Ханойськi башти
Диски з вирізаною серединою (форма бублика) перекладають таким чином:
Завдання
Створіть програму tower.* для визначення найменшої кількості переміщень дисків і розташування дисків після певної кількості переміщень, здійснених за оптимальним щодо кількості переміщень планом.
Вхідні дані
Файл tower.in містить у вказаному порядку кількості дисків n і переміщень k, де n < 60, k < 1018.
Вихідні дані
Єдиний рядок файлу tower.out має містити у вказаному порядку, починаючи з першої позиції:
шукану найменшу кількість переміщень n дисків від початкового моменту до кінцевого;
у порядку зростання номери дисків, які розташовані відповідно на стержнях 1, 2, 3 після k переміщень, здійснених за оптимальним щодо кількості переміщень планом.
Диски занумеровано натуральними числами в межах від 1 до n включно у порядку зростання радіусів основ. Вмісти дисків розділено символом «*». Між числами, між числом і роздільником «*» лише 1 пропуск.
Приклади
tower.in | tower.out |
---|---|
3 1 | 7 * 1 * * 2 3 * |
3 2 | 7 * 1 * 2 * 3 * |
3 3 | 7 * * 1 2 * 3 * |
3 4 | 7 * 3 * 1 2 * * |
3 5 | 7 * 3 * 2 * 1 * |
3 6 | 7 * 2 3 * * 1 * |
3 7 | 7 * 1 2 3 * * * |
2. Трикутники
Завдання
Створіть програму triangle.*, яка з'ясує, чи можна з даних 4 трикутників утворити трикутник «склеюванням» вздовж сторони.
Вхідні дані
Кожний рядок файлу triangle.in містить чотири трійки натуральних чисел, які є сторонами даних трикутників і менші за 321.
Вихідні дані
Відповідний рядок файлу triangle.out має містити:
або сторони новоутвореного трикутника у порядку неспадання (якщо такий трикутник існує, то він єдиний);
або запис: «No solution», якщо такий трикутник не існує.
Приклад
triangle.in | triangle.out |
---|---|
5 4 3 5 4 3 5 4 3 5 4 3 5 4 3 5 4 3 5 4 3 4 4 3 |
6 8 10 No solution |
Примітка щодо оцінювання
Бали за «No solution» присуджують лише у разі успішного проходження решти тестів.