Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
WZP09_1D - Szyfr |
Kamil D. jest prezenterem wiadomości w jednej z czołowych polskich stacji telewizyjnych. Życie Kamila było niczym bajka, jak każdy prezenter jeździł po Polsce i zbierał prezenty. Pewnego dnia nasz bohater zauważył, że stół przy którym prowadzi program jest u... ubrudzony. Kamil szybko i dosadnie dał do zrozumienia obsłudze studia co sądzi o takim stanie rzeczy. Niestety styl wypowiedzi naszego bohatera chyba nie przypadł do gustu jego współpracownikom bo już następnego dnia Kamil zobaczył na ekranie promptera tekst wiadomości w postaci zaszyfrowanej, ze złośliwym uśmieszkiem na jego końcu :-> Nasz prezenter nie wahał się ani chwili i od razu zwrócił się o pomoc do Ciebie.
Napisz program, który odkoduje zaszyfrowany tekst. Algorytm szyfrowania jest następujący: dla tekstu o długości n znaków (gdzie kolejne znaki mają indeksy od 1 do n) wyznaczamy element środkowy o indeksie (n + 1) div1 2 i przesuwamy go na początek tekstu. Operację tę powtarzamy rekurencyjnie dla tekstu z prawej i z lewej strony środkowego znaku. Oto schemat działania algorytmu szyfrowania dla słowa „ALGORYTM”:
- Wyznaczamy środkowy element: (8 + 1) div 2 = 4
ALG-O-RYTM - Przestawiamy środkowy element na początek tekstu:
O-ALG-RYTM - Powtarzamy pierwsze dwa punkty dla tekstu, który na początku znajdował się po lewej stronie litery O:
O-L-A-G-RYTM - To samo robimy dla tekstu z prawej strony litery O:
O-L-A-G-Y-R-TM - Ponieważ tekst jest podzielony na fragmenty krótsze niż 3 znaki to nie mamy już czego przestawiać. Zakodowana postać słowa „ALGORYTM” to „OLAGYRTM”.
Wejście
W pierwszej i jedynej linii wejścia znajduje się zaszyfrowany tekst, którego długość nie przekroczy 10000 znaków. Tekst może zawierać wielkie i małe litery alfabetu angielskiego, spacje oraz znaki interpunkcyjne.
Wyjście
Na wyjściu należy wypisać tekst w postaci odszyfrowanej.
Przykład #1
Dla danych:
OLAGYRTM
Twój program powinien wypisać:
ALGORYTM
Przykład #2
Dla danych:2
laeNi mi nc gsepzeno izaispianze adnpn o aochc!
Twój program powinien wypisać:
Nie ma nic lepszego niz pisanie zadan po nocach!
- Przez operator div rozumiemy dzielenie bez reszty np. 7 div 2 = 3
- Przed pierwszym wyrazem w danych z przykładu drugiego znajduje się pojedyncza spacja!
Dodane przez: | Maciej Boniecki |
Data dodania: | 2009-10-31 |
Limit czasu wykonania programu: | 1s |
Limit długości kodu źródłowego | 50000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | All except: ASM64 GOSU |
Pochodzenie: | Wiosenne Zawody Programistyczne 2009 |