Autokey
Cifrul Autokey este un cifru ce foloseste o matrice cu litere de marimea 26x26
iar liniile si coloanele vor avea asociata o litera (linia si coloana 1
le vom nota cu A
, linia si coloana 2
cu B
…, linia si coloana 26
cu Z
).
Matricea se va forma astfel:
- Pe linia
1
se pun litereleA
,B
,C
…Z
- Pe linia
2
se pun litereleB
,C
,D
…Z
,A
- Pe linia
3
se pun litereleC
,D
,E
…Z
,A
,B
- Pe linia
4
se pun litereleD
,E
,F
…Z
,A
,B
,C
- …
- Pe linia
26
se pun litereleZ
,A
,B
,C
, …Y
- Cu alte cuvinte, pentru fiecare linie
i
(1≤i≤26
), se vor lua primelei-1
litere din alfabet si se pun la sfarsitul acestuia. - Cheia o putem considera un vector
C
care aren
litere si incepe de pe pozitia0
iar mesajul il vom considera un vectorM
care incepe si el de pe pozitia0
. - Cheia trebuie sa fie mai lunga decat mesajul asa ca acesteia i se va adauga la sfarsit mesajul.
- pentru fiecare litera
M[i]
, afisam litera de pe liniaM[i]
si coloanaC[i]
,0 ≤ i < lungimea mesajului
.
Cerința
Dandu-se o cheie si un mesaj, sa se afle cum va arata mesajul dupa o codificare.
Date de intrare
Fișierul de intrare autokey.in
conține pe prima linie mesajul si cheia.
Date de ieșire
Fișierul de ieșire autokey.out
va conține pe prima linie mesajul dupa o codificare.
Restricții și precizări
1 ≤
lungimea mesajului, lungimea cheii≤ 10000
Exemplu:
autokey.in
MEETATTHEFOUNTAIN KILT
autokey.out
WMPMMXXAEYHBRYOCA
Explicație
Matricea arata astfel:
# 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 # --------------------------------------------------- A 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 B 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 A C 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 D 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 C E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E G G 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 H 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 I 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 H J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U U 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 V 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 W 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 V X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z Z 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
Cheia va fi KILTMEETATTHEFOUNTAIN
.
Pentru prima pereche, pe linia M
si coloana K
se afla litera W
.