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