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