Zadania

Transkrypt

Zadania
Zadanie 1 Rozterki administratora
Każdy administrator sieci wie, jak sieć łatwo dzieli się. Dostawca Internetu przypisał sieci naszego
admina adres IP w postaci czterech liczb dziesiętnych z zakresu 1...255 oddzielonych kropkami z
prefixem w postaci liczby dziesiętnej z zakresu 1..32. Ale Szefostwo nakazało: ty adminie masz
podłączyć nasze n podsieci do Internetu, a masz tylko jeden adres IP!!! Zrób coś albo poprosimy o
to samo twojego następcę. Pomóż biednemu adminowi sprawdzić, czy w ogóle jest w stanie
podłączyć taką masę komputerów oraz jakiej puli adresów mu zabraknie lub ile zostanie wolnych.
Dane wejściowe:
Pierwsza linia zawiera adres IP od dostawcy i prefix oddzielony od adresu znakiem /, druga linia
liczbę n dołączanych podsieci, kolejne n linii – liczbę komputerów w kolejnych dołączanych
podsieciach.
Dane wyjściowe:
Pierwsza z literą T jeśli możliwe jest dołączenie wszystkich sieci lub N w przeciwnym przypadku.
W drugiej linii liczba całkowita oznaczająca liczbę wolnych adresów, które pozostały
niewykorzystane (w przypadku odpowiedzi T) lub pulę adresów, których zabraknie (w przypadku
odpowiedzi N).
Przykład:
Dane wejściowe:
172.16.0.0/24
5
54
68
33
26
12
Dane wyjściowe:
N
64
OBJAŚNIENIE:
Adres IP zapisywany jest w postaci dziesiętnej by można go zapamiętać. Naprawdę ma postać
dwójkową. Każda liczba dziesiętna reprezentuje osiem kolejnych bitów, np.:
172 .
16
.
148
.
22
10101100 00010000 10010100 00010110
Prefix oznacza maskę sieci i służy (w tym przypadku) do podziału sieci. Prefix mówi ile możemy
wykorzystać bitów w adresie IP na zaadresowanie komputerów, np. prefix /22 mówi, że możemy
wykorzystać 32-22=10 bitów na adresy. 10 bitów to 210 = 1024 adresy. Ale należy pamiętać, że z
pierwszego i ostatniego nie możemy skorzystać (ale fizycznie istnieją!!!), czyli ostatecznie mamy
210 -2 = 1022 adresy do wykorzystania. Podział sieci z użyciem prefixa oznacza, że w
poszczególnych podsieciach mamy pewną stałą liczbę adresów użytkowych, tzn. /24 = 28 -2 =
254, /28 = 24 -2 = 14 itp. Znając liczbę komputerów, które musimy dołączyć w danej podsieci
możemy oszacować, ile zużyjemy na nią adresów. Znając liczbę podsieci i zużytych przez nie
adresów możemy stwierdzić, czy adminowi uda się podzielić odpowiednio sieć. Rozpatrując
przykład do zadania:
1. mamy sieć o prefixie /24, czyli do dyspozycji 28 -2 = 254 adresów
2. obliczamy realny rozmiar kolejnych podsieci:
54 komputery → najbliższa podsieć, która obejmie taką liczbę komputerów to /26, bo
26 -2 = 62
• 68 komputerów → najbliższa podsieć, która obejmie taką liczbę komputerów to /25, bo
27 -2 = 126
• 33 komputery → najbliższa podsieć, która obejmie taką liczbę komputerów to /26, bo
26 -2 = 62
• 26 komputerów → najbliższa podsieć, która obejmie taką liczbę komputerów to /27, bo
25 -2 = 30
• 12 komputerów → najbliższa podsieć, która obejmie taką liczbę komputerów to /28, bo
24 -2 = 14
3. ostatecznie sumując liczbę adresów w kolejnych podsieciach (i pamiętając, że do każdej
musimy z powrotem dodać dwa adresy, których nie można użyć, ale które istnieją!!!)
uzyskujemy 62(+2)+126(+2)+62(+2)+30(+2)+14(+2)=304, co przekracza dopuszczalną
liczbę 254 przy zadanym prefixie /24 – odpowiedź N
4. zabrakło: 304 (patrz punkt 3) – 254 (liczba adresów przy prefixie /24, tj. 28-2) = 50 adresów
→ najbliższa podsieć, która obejmie taką liczbę komputerów to /26, czyli potrzeba jeszcze
26 = 64 adresy (liczymy wraz z pierwszym i ostatnim adresem w podsieci pomimo, że nie
mogą być one wykorzystane).
•
Zadanie 2 Mały chemik
Franio, mały chemik, ma nie lada problem. W doświadczeniu, które chce wykonać ma wyraźnie
powiedziane: odmierz dokładnie n miligramów materiału bardzo, ale to bardzo wybuchowego. Zbyt
niska waga – będzie niezły wybuch, zbyt wysoka waga – jeszcze lepsza eksplozja. A Franio ma
tylko wagę szalkową i dwa typy odważników: o wadze x i y miligramów. Ale przecież to nie
problem – Ty mu pomożesz i napiszesz program, który podpowie, ile i jakich odważników potrzeba
do pomiaru.
Dane wejściowe
Trzy liczby n, x i y oddzielone pojedynczymi spacjami, które oznaczają odpowiednio: wagę
materiału wybuchowego, którą trzeba zmierzyć, wagę jednego typu odważników i wagę drugiego
typu odważników.
Dane wyjściowe
Dwie nieujemne liczby a i b, oddzielone pojedynczą spacją, oznaczające liczbę potrzebnych
odważników obu typów. Jeżeli zadanie jest niemożliwe do rozwiązania – na wyjściu powinno
pojawić się słowo BRAK i znak końca linii. W przypadku istnienia większej liczby możliwych
rozwiązań – najlepsze jest to, w którym zużyto minimalną liczbę odważników.
Przykład:
Dane wejściowe
200 300 700
Dane wyjściowe
3 1
OBJAŚNIENIE:
Należy pamiętać, że ważyć można na wiele sposobów, tj np.:
sposób 1
sposób 2
Oczywiście sposób 2 jest rozwiązaniem – 4 odważniki, a nie sześć (sposób 1).
Zadanie 3 Witraże hobbitów
Pippin i Merry postanowili kupić Samowi prezent – przepiękny witraż. Sami go zaprojektowali.
Wyglądał cud... cudacznie. Hobbici, jak wiadomo, mają okrągłe okna, a witraż zaprojektowany na
prostokątnej kartce składał się z wielokąta wypełnionego różnymi barwami. Oczywiście nie cały
zmieściłby się na oknie, więc część po prostu nie zostanie namalowana. Rzemieślnik, który ma go
stworzyć nie umie go jednak wycenić – farba jest bardzo droga i ostateczna cena witrażu zależy od
pola zamalowanej powierzchni. Napisz program, który pomoże obliczyć to pole.
Dane wejściowe
W pierwszej linii dwie liczby całkowite n i r oddzielone pojedynczą spacją, odpowiednio liczba
wierzchołków łamanej i promień okna. W kolejnych n liniach dwie liczby całkowite xi i yi
(oddzielone pojedynczą spacją) – współrzędne wierzchołków łamanej zapisane w kolejności
zgodnej z ruchem wskazówek zegara, Początek układu współrzędnych znajduję się w środku okna.
Dane wyjściowe
Liczba zmiennoprzecinkowa oznaczająca pole zamalowanej powierzchni witrażu. Dopuszczalny
błąd względny wyniku wynosi 0.01.
Przykład:
Dane wejściowe
14 3
1 -1
0 0
0 1
-1 -1
1 -2
4 -1
1 -4
-3 1
0 3
3 3
-1 2
2 2
1 1
4 0
Dane wyjściowe
15.6515
OBJAŚNIENIE:
Rysunek przedstawia projekt witrażu z przykładu. Poszukiwane jest pole powierzchni
zaznaczonego błękitnym kolorem fragmentu.
Zadanie 4 Klasztor Shaolin
Dwaj Mistrzowie sztuk walki, chcąc uatrakcyjnić młodym Adeptom ćwiczenia, wybudowali
,,palowy park”. Park składał się z n2 pali wbitych w ziemię w równych odstępach na planie
kwadratu. Lata ćwiczeń spowodowały, że pale wbite nad przekątną kwadratu uległy zniszczeniu
stając się niebezpieczne. Każdy z Adeptów musiał pokonać park skacząc na jednej nodze
zaczynając od lewego dolnego pala i kończąc na prawym górnym, przy czym dopuszczone są tylko
skoki w prawo na najbliższy pal lub do góry na najbliższy pal, ze względów bezpieczeństwa nie
przekraczające przekątnej. Napisać program obliczający ile różnych dróg mogą pokonać Adepci
wykonujący ćwiczenie.
UWAGA:
Do obliczeń należy zastosować 32 bitowy typ całkowity dostępny w kompilatorze. Dopuszczalny
jest wynik będący liczbą ujemną powstałą w wyniku obliczeń modulo.
Dane wejściowe
Jedna linia zawierająca dodatnią liczbę naturalną wbitych pali zakończona znakiem nowej linii.
Dane wyjściowe
Jedna linia zawierająca ilość możliwych dróg zakończona znakiem nowej linii.
Przykład:
Dane wejściowe
16
Dane wyjściowe
5
Zadanie 5 Złodziej
Złodziejowi udało się włamać do bogatej posiadłości, pełnej cennych przedmiotów. Niestety, każdy
z nich miał swoją wagę i niemożliwe było zabranie ich wszystkich, ponieważ nasz złodziej może
unieść tylko określony ciężar. Napisać program, który wyznaczy przedmioty warte zabrania tak,
aby wartość wyniesionego łupu była maksymalna, zaś jego waga nie przekroczyła ciężaru, który
może unieść złodziej.
Dane wejściowe
W pierwszej linii maksymalny udźwig złodzieja n, w kolejnych liniach dwie liczby całkowite m i w
oddzielone pojedynczą spacją oznaczające odpowiednio wagę i wartość kradzionych przedmiotów.
Dane wyjściowe
Program powinien wypisać na ekranie dla każdego wybranego przez złodzieja przedmiotu po dwie
liczby całkowite (oddzielone pojedynczą spacją) określające wagę i wartość tego przedmiotu, a w
ostatnim wierszu łączną wagę i wartość wyniesionego przez złodzieja łupu.
Przykład:
Dane wejściowe
100
80
200
5
10
40
25
50
50
10
25
8
50
Dane wyjściowe
80
200
10
25
8
50
98
275
Zadanie 6 Stolarz
Stolarzowi zlecono wykonanie drewnianych płotków o kształcie okręgu otaczających drzewka
rosnące szpalerem wzdłuż alejki w parku. Każde drzewko ma być otoczone osobnym płotkiem i
znajdować się dokładnie w jego środku. Wartość zamówienia zależy od sumarycznej długości
płotków. Stolarz chciałby, oczywiście, zarobić jak najwięcej. Pomóż mu tak wytyczyć płotki, aby
sumaryczna ich długość była jak największa.
Dane wejściowe
W pierwszej linii liczba całkowita n oznaczająca liczbę drzewek, które należy otoczyć płotkami. W
kolejnej linii n liczb całkowitych z zakresu <0, 108> oznaczające współrzędne drzewek (zakładamy,
że rosną one w linii prostej wzdłuż alejki).
Dane wyjściowe
Jedna liczba zmiennoprzecinkowa oznaczająca sumaryczną długość płotków. Wynik należy podać z
dokładnością do dwóch miejsc po przecinku.
Przykład:
Dane wejściowe
8
15 16 19 0 1 7 11 13
Dane wyjściowe
62.83