Zadania - Instytut Informatyki UwB
Transkrypt
Zadania - Instytut Informatyki UwB
Zestaw zadań konkursowych XIII Regionalnego Konkursu Informatycznego Instytut Informatyki UwB 06.04.2013 r. Uwaga: Skompilowane wersje programów oraz kody źródłowe mają być umieszczone na Pulpicie w katalogu o nazwie „konkurs” i podkatalogach z odpowiednim numerem zadania. Nazwy plików: z1.exe i z1.cpp – program będący rozwiązaniem zadania 1, z2.exe i z2.cpp – zadania 2 itd. Fabryka maszyn W pewnej fabryce maszyn ciężkich produkowano koparki przedsiębierne. W zależności od ilości zamówień produkowano ich od 3 do 15 tygodniowo. Tylko w najlepszych latach aż 17 – tyle ile wynosi maksymalna tygodniowa wydajność fabryki. Każda koparka opatrzona jest unikatowym numerem fabrycznym składającym się z liter KP symbolizujących koparki przedsiębierne, czterech cyfr oznaczających rok produkcji, znaku myślnika oraz ciągu niepowtarzających się dużych liter (A,B,C,...) oznaczającego kolejny numer. Twoim zadaniem jest napisanie programu, który wygeneruje listę kolejnych numerów fabrycznych (po jednym numerze w linii). Lista musi zawierać wystarczającą ilość numerów do oznakowania każdej wyprodukowanej koparki z zapasem 10% w stosunku do rocznego zamówienia i być posortowana alfabetycznie. Każdy numer w danym roku musi posiadać tę samą długość. Ze względów oszczędnościowych zakłada się, że wszystkie numery muszą być możliwie najkrótsze oraz produkuje się ich możliwie najmniej. Do generowania numerów korzysta się w miarę potrzeb kolejno z liter A,B,C,D,E,F, itd. Dane wejściowe Dwie linie z pojedynczą liczbą naturalną: pierwsza oznaczająca rok produkcji (rok z obecnej dekady) i druga oznaczająca roczne zamówienie złożone fabryce. Dane wyjściowe Lista z numerami seryjnymi. Przykład: (niespotykanie słaby rok, kiedy zamówiono tylko 7 koparek) Dane wejściowe 2013 7 Dane wyjściowe KP2013-ABCD KP2013-ABDC KP2013-ACBD KP2013-ACDB KP2013-ADBC KP2013-ADCB KP2013-BACD KP2013-BADC Kółka graniaste Pewien producent samochodzików-zabawek postanowił ułatwić sobie pracę a tym samym przyspieszyć produkcję – zamiast wytwarzać prawdziwe koła do swoich zabawek postanowił zastąpić je zbliżonymi wielokątami foremnymi wpisanymi w to koło, które są dużo szybciej wycinane przez maszyny w jego warsztacie. Znajomy inżynier przekonał go, że wystarczy aby obwód takiego wielokąta niezbyt różnił się od obwodu koła a wykonane w ten sposób „kanciaste” koło również będzie się z powodzeniem toczyć – do tego samo będzie turkotać, co pozwoli zrezygnować z montowania dodatkowych elementów. Pomysł wydaje się świetny, pozostaje tylko oszacować, ile boków powinien mieć taki wielokąt, aby przy zadanym promieniu koła jego obwód nie różnił się od wyjściowego obwodu koła o więcej niż określony ułamek wyrażony w procentach. Dane wejściowe Pierwsza linia zawiera liczbę rzeczywistą r (0<r ⩽100) oznaczającą promień koła. W drugiej linii znajduje się liczba rzeczywista p mówiąca, o ile co najwyżej procent może różnić się obwód wielokąta od obwodu koła. Dane wyjściowe Minimalna liczba boków wielokąta foremnego spełniającego wymaganie określone przez promień r i procent p. Przykład: Dane wejściowe 5.0 2.0 Dane wyjściowe 10 Księżycowe „figuraki” Pewien przedsiębiorczy businessman postanowił nie czekać na ostateczny podbój Księżyca i już teraz chce rozpoczął w Internecie sprzedaż działek pod budowę przyszłych księżycowych domów. Na podstawie zdjęć satelitarnych sporządził na swoim komputerze mapę, wykreślił na niej pewną ilość linii prostych oraz krzywych wielomianowych. Dzięki temu uzyskał mnóstwo niepowtarzalnych kształtów – dla każdego chętnego znajdzie się jakaś ciekawa działka. Oczywiście na sprzedaży działek chce odpowiednio zarobić – im większa, tym powinna być droższa. Jako pierwsze postanowił wystawić na sprzedaż działki, które mają trzy proste boki stykające się pod kątem prostym, natomiast czwarty „bok” jest wyznaczony przez pewną krzywą. Udało mu się już umieścić każdy z tych księżycowych „figuraków” w układzie współrzędnych, tak aby jeden z prostych boków leżał na osi odciętych (X) zaś dwa kolejne były równoległe do osi rzędnych (Y), ale musisz mu pomóc w policzeniu ich pola powierzchni. Dane wejściowe Pierwsza linia zawiera parę liczb rzeczywistych a i b (−10⩽a , b⩽10) wyznaczających odpowiednio lewe i prawe ograniczenie figury. W drugiej linii znajduje się liczba n określająca stopień wielomianu, którego wykres ogranicza figurę z góry. Trzecia linia zawiera listę n+1 rzeczywistych współczynników tego wielomianu oddzielonych pojedynczą spacją w kolejności od współczynnika stojącego przy największej potędze. Dane wyjściowe Pole figury z dokładnością do dwóch miejsc dziesiętnych. Przykład: Dane wejściowe -1.0 2.0 4 2.0 -3.0 0 0 2.0 Dane wyjściowe 7.95 Jedenastka Kłopotów w tajnym Laboratorium Obrony Wszechświata ciąg dalszy. Tym razem niezwykle ważne jest, żeby jak najszybciej sprawdzić, które z wielkich liczb występujących w obliczeniach pracowników laboratorium dzielą się przez jedenaście. Niestety wyjątkowo złośliwy kosmiczny wirus sprawił, że liczby te znikają z pamięci komputera. Na szczęście zanim znikną, mogą być wydrukowane przy pomocy „przedpotopowych” igłowych drukarek odpornych na tego wirusa. Jednak na domiar złego, w laboratorium nie używano takich drukarek od bardzo dawna i okazało się, że nie są one w pełni sprawne. Czasem drukują tylko te cyfry danej liczby, które występują w jej zapisie na miejscach parzystych, albo dla odmiany drukują tylko cyfry na miejscach nieparzystych. Czy i tym razem zdołasz ocalić wszechświat pisząc program, który będzie w stanie szybko sprawdzić pod kątem podzielności dowolnie duże „ulotne” liczby? Dane wejściowe Pierwsza linia zawiera liczbę n (1⩽n⩽100) oznaczającą, ile jest przykładów do sprawdzenia. Kolejne n par linii zawiera pary ciągów cyfr występujących w rozwinięciu dziesiętnym danej liczby na miejscach parzystych lub nieparzystych (nie wiadomo, który z tych dwóch ciągów oznacza cyfry z miejsc parzystych a który z nieparzystych, ale można założyć, że żadna liczba nie ma więcej niż 255 cyfr). Dane wyjściowe Kolejne n linii powinno zawierać liczbę 1 lub 0 w zależności od tego, czy odpowiadająca im kolejna liczba zadana poprzez dwa odpowiednie ciągi jest podzielna przez 11, czy nie. Przykład: Dane wejściowe 3 1234 567 231 1999 11000000000000000000001 187564643754627365425987 Dane wyjściowe 0 1 1 Wyścig Shire Hobbici, znani w Śródziemiu ze swego lenistwa i niechęci do uprawiania jakichkolwiek sportów, zobowiązani są do uczestnictwa w wielkim Wyścigu Shire. Nagroda należy do kategorii odchudzanie – im dalsze miejsce zajmiesz, tym więcej posiłków opuszczasz w ciągu roku (na szczęście zwyczaje panujące w Hobbitonie opisują reżim żywieniowy na poziomie 30-40 posiłków dziennie więc nie ma ryzyka, że Hobbit umrze z głodu). Ale obliczanie wyników jest dość problematyczne, dlatego dotąd zajmował się nim Gandalf, czarodziej. Niestety, w tym roku zabraknie go na Wyścigu i prosi Ciebie zatem o napisanie programu, który pozwoli obliczyć liczbę posiłków utraconych przez Hobbita zajmującego zadane miejsce. A w starych księgach zapisano: "Weź podwojoną wagę Hobbita i pomnóż przez piątą część liczby posiłków, które utraciłby, gdyby przybył o jedną pozycję wcześniej. Azaliż by nie zgnuśniał doszczętnie i nie zamartwiał się przez rok cały, odejmij od tego liczbę posiłków, które utraciłby, gdyby przybył o dwie pozycje wcześniej. Wynik podziel przez 10 i dokonaj zaokrąglenia tego, coś uzyskał tak, by Hobbit radości z tego nie miał, a i ułamkami się nie głowił. Jednakowoż Hobbit, który przybędzie pierwszy utraci 1 posiłek, drugi zaś - tyle co waży podzielone przez 10 z zaokrągleniem jak wyżej. Pozostałych traktuj, jak zapisano wcześniej. Niech sie stanie." Dane wejściowe Jedna linia zakończona znakiem końca linii zawierająca dwie liczby: naturalną n (1⩽n⩽15) oznaczającą miejsce zajęte przez Hobbita, rzeczywistą w (30⩽w⩽40) oznaczającą wagę Hobbita (dokładność do jednego miejsca po przecinku). Dane wyjściowe Jedna liczba całkowita oznaczająca liczbę utraconych posiłków. UWAGA: jeżeli z obliczeń uzyskujemy ułamek – zaokrąglamy na niekorzyść Hobbita do liczby całkowitej. Przykład: Dane wejściowe 5 36.5 Dane wyjściowe 13