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
1se pun litereleA,B,C…Z - Pe linia
2se pun litereleB,C,D…Z,A - Pe linia
3se pun litereleC,D,E…Z,A,B - Pe linia
4se pun litereleD,E,F…Z,A,B,C - …
- Pe linia
26se pun litereleZ,A,B,C, …Y - Cu alte cuvinte, pentru fiecare linie
i(1≤i≤26), se vor lua primelei-1litere din alfabet si se pun la sfarsitul acestuia. - Cheia o putem considera un vector
Ccare arenlitere si incepe de pe pozitia0iar mesajul il vom considera un vectorMcare 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.