B - Galera
Transkrypt
B - Galera
WEiTI Kwalifikacje na AMPPZ / CERC 18 października 2014 Zadanie B Opornik Biuro Informacji Tajnej (BIT) pracuje nad nowymi sposobami wprowadzania w błąd ciekawskich, którzy w sposób nieuprawniony próbowaliby zapoznać się z treścią wrażliwych dokumentów. Jeden z pomysłów, opatrzony kryptonimem "Opornik" (oczywiście pomysł jest tajny), zakłada wykorzystanie odwracalnego kodowania: dodatnia_liczba_wymierna ↔ łańcuch_zero-jedynkowy (albo w skrócie: num ↔ bin) Kodowanie polega na zastosowaniu reprezentacji liczby wymiernej przez szeregoworównoległą drabinkową sieć rezystorową złożoną z oporników o wartościach jednostkowych. Proste kodowanie tej struktury pozwala uzyskać ciąg zero-jedynkowy. Niech R = p/q oznacza opór zastępczy pewnej sieci szeregowo równoległej (rys. a), której odpowiada ciąg zerojedynkowy bin(p/q). Sieć możemy rozbudować na dwa sposoby: dodając opornik jednostkowy szeregowo (rys. b) albo równolegle (rys. c). Konstrukcja każdej sieci rozpoczyna się od pojedyńczego opornika jednostkowego (rys. d), bin(1/1) = "1". Trzeba opracować program realizujący to kodowanie w jedną i drugą stronę. p/q p/q p/q bin(p/q)) (a) bin(p/q)+"1" (b) bin(p/q)+"0" (c) "1" (d) Wejście Wejście standardowe zawiera ciąg wierszy - instancji problemu. Każda instancja rozpoczyna się od 3-znakowego wyróżnika "BIN" albo "NUM" oddzielonego spacją od reszty specyfikacji, którą stanowi ciąg zero-jedynkowy bin (wyróżnik "BIN") albo liczba wymierna p/q (wyróżnik "NUM"). Długość ciągu bin nie przekracza 10000, wartości p, q ∈ {1..1000000} i są względnie pierwsze. Wyjście Dla każdej instancji problemu wyprowadzany jest wiersz zawierający specyfikację istancji odwrotnej: jeżeli instancja wejściowa miała postać BIN bin to wyprowadzany jest równoważny opis NUM p/q i odwrotnie. Uwaga: Dane wejściowe są tak dobrane, że podane ograniczenia dla ciągu bin i liczb p, q obowiązują także na wyjściu. Przykład Wejście NUM 1/1 BIN 1 NUM 2/3 NUM 7/4 BIN 11101 NUM 15/11 Wyjście BIN 1 NUM 1/1 BIN 110 BIN 11101 NUM 7/4 BIN 1001001 WEiTI Qualifying competitions to AMPPZ / CERC 18th October, 2014 Task B Resistor The Secret Information Office (SIO) is working hard on new ways to mislead the curious people who would fraudulently try to read the contents of classified documents. One of the ideas, given the code name "Resistor" (of course, the idea and the code name are secret), involves using reversible encryption: positive_rational_number ↔ binary_string (or more compactly: num ↔ bin) Encoding involves using representation of a given rational number by a ladder-shaped seriesparallel network of unit value resistors. Simple coding scheme of the ladder structure allows for generating a binary string. Let R = p/q be the equivalent resistance of a series-parallel network (Fig. a), which corresponds to a zero-one string bin(p/q). The network can be expanded in two ways: by adding a unit resistor in series (Fig. b) or in parallel (Fig. c). Growing any such network we have to start with a single unit resistor (Fig. d), for which the binary code is bin(1/1) = "1". Your task is to develop a program implementing this encoding scheme both ways. p/q p/q p/q bin(p/q)) (a) bin(p/q)+"1" (b) bin(p/q)+"0" (c) "1" (d) Input Standard input contains a sequence of problem instances, one instance per input line. Each instance begins with a 3-character marker "BIN" or "NUM" separated by a space from the rest of the specification, which is a binary sequence bin (for marker "BIN") or rational number p/q (for marker "NUM"). The length of the bin does not exceed 10000, the values of p, q ∈ {1..1000000} and are relatively prime. Output For each problem instance the program generates one output line containing the specification of the reversed problem instance: if the input was of the form BIN bin then the output line is the equivalent NUM p/q and vice versa. Note: The input data are selected so that constraints concerning the sequence bin and numbers p, q are also satisfied on output. Example Input NUM 1/1 BIN 1 NUM 2/3 NUM 7/4 BIN 11101 NUM 15/11 Output BIN 1 NUM 1/1 BIN 110 BIN 11101 NUM 7/4 BIN 1001001