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