Zadanie: KOD Kodowanie
Transkrypt
Zadanie: KOD Kodowanie
Zadanie: KOD Kodowanie Autor zadania: Cezary Michalczyk. Plik źródłowy: KOD.cpp ; Limit pamięci: 32MB Nauczyciele, ze szczególną starannością, przygotowują dla swoich Uczniów zadania do rozwiązania. Chcą w ten sposób rozwijać ich umiejętności i - oczywiście - na bieżąco sprawdzać stan ich wiedzy. W tym celu wymyślają treści zadań i zapisują je w plikach tekstowych na szkolnym komputerze. Mają jednak pewien problem. Z komputera mogą korzystać zarówno Uczniowie jak i Nauczyciele, istnieje więc pewne ryzyko, że Uczniowie podejrzą hasło i uzyskają łatwy dostęp do zadań. Aby temu zapobiec, Dyrekcja wymyśliła, żeby ich treści zostały zaszyfrowane. Szyfrowanie opiera się na bardzo prostej zasadzie: każda litera tekstu jawnego jest zastępowana przez inną literę oddaloną od niej o pewną liczbę pozycji, określoną przez liczbę całkowitą i. Przesunięcia dokonuje się zawsze względem ostatniego położenia alfabetu, zaś podmieniana jest litera alfabetu początkowego (o przesunięciu 0). Klucz przesunięć nie musi być tej samej długości co tekst do zakodowania. Jeśli okaże się krótszy, zapętlamy go, tzn. element nr zakodujemy poprzez przesunięcie nr 1 itd. Zamiana przykładowego tekstu BAG o cyklu przesunięć (-7 12) wygląda następująco: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z H I J K L M N O P Q R S T U V W X Y Z A B C D E F G 1 + 26 - 7 = 20 V W X Y Z A B C D E F G H I J K L M N O P Q R S T U 20 + 12 - 26 = 6 C D E F G H I J K L M N O P Q R S T U V W X Y Z A B 6 + 26 - 7 = 25 Zaszyfrowaliśmy tekst BAG do IVI. Dyrekcja ma do Ciebie prośbę! Napisz program, który zaszyfruje dowolne treści zadań wg podanego powyżej schematu. Wejście Pierwszy wiersz standardowego wejścia zawiera tekst jawny (do zakodowania), składający się jedynie z wielkich liter alfabetu łacińskiego (jednym ciągiem, bez spacji). ł ść 000000. Drugi wiersz wejścia zawiera jedną liczbę całkowitą n (0 000000), określającą z ilu elementów będzie składał się cykl przesunięć alfabetu. Trzeci i ostatni wiersz wejścia zawiera n liczb całkowitych oznaczających wartość kolejnych przesunięć. Wartość ujemna to przesunięcie "w lewo", zaś dodatnia - "w prawo". Należy pamiętać, że przesunięcie o jest równoznaczne z przesunięciem o . Wyjście Pierwszy i jedyny wiersz standardowego wyjścia powinien zawierać zaszyfrowany tekst o takiej samej długości jak tekst jawny wejścia i składać się wyłącznie z wielkich liter alfabetu łacińskiego. Przykład Dla danych wejściowych: HJMKHMCTAZSDENGCPMHY 14 -46 33 -52 13 23 22 -11 4 -26 40 41 -46 -33 -39 Prawidłową odpowiedzią jest: BWZKKTUHOZDIQQZOBPJE