| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 128 MB | 31 | 23 | 17 | 73.913% |
Wieże Hanoi to tradycyjna zabawa-łamigłówka polegająca na nakładaniu krążków na słupki. Dysponujemy n krążkami o średnicach 1, 2, ..., n i trzema słupkami, które nazwiemy A, B i C. Każdy krążek ma w środku dziurkę, która pozwala nałożyć krążek na słupek. Początkowo wszystkie krążki znajdują się na słupku A i są ułożone począwszy od największego (na dole) do najmniejszego (na górze). Zabawa polega na przeniesieniu wszystkich krążków na jeden z wolnych słupków (powiedzmy B) zgodnie z następującymi zasadami:
Krążki nałożone na jeden słupek nazwiemy wieżą. Podsumowując powyższe zasady, możemy stwierdzić, że:
Celem w tej zabawie jest przeniesienie wieży z jednego słupka na drugi w najmniejszej, możliwej liczbie ruchów.
Dwubarwne wieże Hanoi, to nieco zmodyfikowana odmiana powyższej układanki. Jak poprzednio mamy trzy słupki i n krążków o średnicach 1, 2, ..., n. Tym razem jednak krążki o średnicach nieparzystych (1, 3, 5, ...) są białe, a krążki o średnicach parzystych (2, 4, 6, ...) są czarne. Celem zabawy jest przeniesienie (zgodnie z podanymi wyżej zasadami) wszystkich krążków białych na słupek B, a krążków czarnych na słupek C.
Napisz program, który wyliczy minimalną liczbę ruchów, potrzebnych do ułożenia krążków białych na słupku B, a krążków czarnych na słupku C.
Program powinien czytać dane z wejścia standardowego. W pierwszym wierszu podana jest liczba n (0 ≤ n ≤ 1 000), oznaczająca liczbę krążków.
Program powinien pisać wynik na wyjście standardowe. Wynikiem powinna być jedna liczba oznaczająca minimalną liczbę ruchów potrzebnych do rozdzielenia białych i czarnych krążków.
6
45
Contest > Algorithmic Engagements > PA 2001 4-1번