Etap II - kategoria LICEUM

Transkrypt

Etap II - kategoria LICEUM
Uniwersytet Kazimierza Wielkiego w Bydgoszczy
Zespół Szkół nr 5 Mistrzostwa Sportowego
XV Liceum Ogólnokształcące w Bydgoszczy
FORDOŃSKI TURNIEJ WIEDZY
ALGORYTMICZNEJ
etap 2 – liceum
5 kwietnia 2008
Zadanie 1. Szybkie potęgowanie
Jaś ma pewną liczbę A i Jaś chce policzyć sobie A^n (A do potęgi n), ale Jaś nie lubi mnożyć, więc
kombinuję, aby mnożyć jak najmniej. Np. aby policzyć A^15 wystarczy 5 mnożeń.
Kolejno dostaniemy:
A
A^2 = A*A,
A^3 = A^2*A
A^5 = A^2*A^3
A^10 = A^5*A^5
A^15 = A^10*A^5
Napisz program, który wczyta ze standardowego wejścia (z klawiatury) liczbę naturalną n
(max. 2000) i wypisze na standardowe wyjście (ekran) minimalną liczbę mnożeń, które Jaś musi
wykonać oraz ciąg kolejno otrzymywanych wykładników.
Przykład.
Dla danych wejściowych:
15
jednym z poprawnych wyników jest właśnie:
5
1 2 3 5 10 15
1
Zadanie 2. Wieża Hanoi
W wielkiej świątyni Benares w Hanoi, pod kopułą, która zaznacza środek świata, znajduje się płytka
z brązu, na której umocowane są trzy diamentowe igły, wysokie na łokieć i cienkie jak talia osy. Na
jednej z tych igieł, w momencie stworzenia świata, Bóg umieścił 64 krążki ze szczerego złota.
Największy z nich leży na płytce z brązu, a pozostałe jeden na drugim, idąc malejąco od
największego do najmniejszego. Bez przerwy we dnie i w nocy kapłani przekładają krążki z jednej
diamentowej igły na drugą, przestrzegając niewzruszonych praw Brahma. Prawa te chcą, aby
kapłan na służbie brał tylko jeden krążek na raz i aby umieszczał go na jednej z igieł w ten sposób,
by nigdy nie znalazł się pod nim krążek mniejszy. Wówczas, gdy 64 krążki zostaną przełożone z igły,
na której umieścił je Bóg w momencie stworzenia świata, na jedną z dwóch pozostałych igieł,
wieża, świątynia, bramini rozsypią się w proch i w jednym oka mgnieniu nastąpi koniec świata.
Oczywiście, nie musimy przejmować się przepowiednią zawartą w tej legendzie, ponieważ, czas
potrzebny na przełożenie 64 krążków jest bardzo długi, ponieważ dla 64 krążków ilość ruchów
wynosi 264-1 i jest to olbrzymia, 19-cyfrowa liczba. Jeśli przyjąć, że każdy ruch trwa 1 sekundę to
przełożenie 64 krążków będzie trwać setki miliardów lat.
Gra Wieża Hanoi jest adaptacją azjatyckiej legendy. Celem gry jest przełożenie wszystkich krążków
ze środkowego drążka na dowolny sąsiedni drążek przestrzegając zasady, iż nie można położyć
krążka większego na mniejszym oraz jednorazowo można przenieść tylko jeden krążek.
Jeśli przez x oznaczymy poszukiwaną liczbę przełożeń krążków, a przez n - liczbę samych krążków,
to x = 2n - 1. A więc przy 7 krążkach trzeba dokonać 127 przełożeń, pod warunkiem, że nie będzie
pomyłki.
Analizując ułożenie krążków na palikach, można zauważyć, że:
1. Najmniejszy krążek znajduje się zawsze na górze któregoś z krążków.
2. Na górze dwóch pozostałych palików jeden krążek jest mniejszy od drugiego i tylko ten jeden
krążek można przenieść – żaden inny ruch między tymi dwoma palikami nie jest możliwy.
Z tych dwóch spostrzeżeń wynika, że najmniejszy krążek musi być przenoszony co drugi ruch,
a w co drugim ruchu przenoszenie krążka jest jednoznacznie określone.
Napisz program generujący kolejne ruchy krążków Wieży Hanoi metodą iteracyjną oraz zliczający
ilość wykonanych przeniesień.
2
Zadanie 3. Autobus
W pewnym mieście, gdzie mieszkają sami naukowcy, burmistrz miasta ma pewien problem.
Otrzymał on pracę naukową, z której wynika, że naukowcy kiedy jadą rano autobusem do pracy
nie rozmawiają między sobą. Nie wynika to z tego, że się wzajemnie nie lubią, bo wręcz przeciwnie,
są oni bardzo przyjaźni i często się śmieją. Wynika to z tego, że każdy z nich jadąc rano do pracy
obmyśla nowe odkrycia i z nikim nie rozmawia. Burmistrze, który oczywiście też jest naukowcem
rozpoczął badania, aby określić przyczynę takiego stanu rzeczy oraz nakłonić naukowców do tego,
żeby więcej ze sobą rozmawiali podczas porannej jazdy autobusem. Na razie udało się ustalić tyle,
że konstrukcje autobusów sprzyjają takiemu zachowaniu naukowców. Autobusy wyglądają tak, że
miejsca siedzące są ustawione w jednym rzędzie, jedno obok drugiego, bez odstępów,
ponumerowane kolejnymi liczbami naturalnymi. Ze względu na wąskie drzwi w autobusie, które
znajdują się przy siedzeniu numer 1, pasażerowie wsiadają pojedynczo. Okazało się, że naukowcy
wchodząc do autobusu siadają według następujących zasad:
• jeżeli wszystkie miejsca są wolne, naukowiec wybiera dowolne miejsce;
• w przeciwnym przypadku wybierane jest miejsce, którego odległość do najbliższego
zajętego miejsca jest jak największa;
• jeżeli miejsc, na których może usiąść naukowiec (zgodnie z poprzednim punktem) jest
więcej to wybiera on takie, które jest najbliżej wejścia (tj. z najmniejszym numerkiem).
Wiadomo, że pasażerowie wchodzą do autobusu tak długo, aż wszystkie miejsca siedzące będą
zajęte. Badania prowadzone przez burmistrza są już na ukończeniu.
Zadanie
Do autobusu wsiada N naukowców (N to również liczba miejsc siedzących w autobusie). Wiemy, że
pierwszy naukowiec siada na miejscu X. Twoim zadaniem jest określenie gdzie usiądzie ostatni
naukowiec.
Specyfikacja wejścia
Pierwsza linia wejścia zawiera liczbę całkowitą D z przedziału <1;50> oznaczającą liczbę zestawów
danych. Każdy zestaw składa się z dwóch liczb całkowitych N oraz X, gdzie X >= 1 oraz X <= N
zapisanych w jednej linii, oznaczających odpowiednio liczbę miejsc siedzących w autobusie, a tym
samym łączną liczbę pasażerów oraz numer miejsca, na którym usiądzie pierwszy pasażer.
Specyfikacja wyjścia
Dla każdego zestawu danych należy wypisać, w osobnej linii numer miejsca na którym usiądzie
ostatni pasażer wsiadający do autobusu.
Przykład
Wejście
2
3 2
5 5
Wyjście
3
4
3

Podobne dokumenty