Cifrul ADFGX
este un cifru care folosește o matrice pătratică 5x5
și o cheie
. În matricea pătratică, liniile și coloanele vor fi numerotate cu litere. Avem această matrice ca exemplu.
A D F G X A a b c d e D f g h i j F k l m n o G p q r s t X u v w x y
Fiecărei litere îi va corespunde un cod
format din linie și coloană.
Spre exemplu pentru litera t
din matricea de mai sus codul este GX
. Literele din fiecare cod se așează sub fiecare literă din cheie. Spre exemplu pentru cheia mar și mesajul atac, folosind matricea de mai sus vom avea:
m a r A A G X A A A F
După această etapă se sortează literele din cheie crescător și obținem.
a m r A A G => AAF AXA GA A X A F A
Acela este mesajul codificat.
Cerinta
Se citeste un text. Sa se afiseze textul codificat folosind cifrul ADFGX
, daca numarul cerintei este 1
, iar daca numarul cerinta este 2
se va afisa textul decodificat.
Data de intrare
Pe prima linie a fisierului de intrare adfgx.in
se va afla un numar, reprezentand cerinta.
Pe a doua linie se va afla o matrice 5 x 5
.
Pe a treia linie se afla cheia
folosita pentru codificare.
Pe a patra linie se va afisa mesajul
ce trebuie codificat/decodificat,in functie de cerinta.
Data de iesire
Se va afisa mesajul codificat/decodificat.
Restrictii si precizari
lungimea mesajului ≤ 100000
extul va contine litere mici ale alfabetului englez
- Pentru
cerinta 2
, mesajul ce trebuie decodificat va continelitere mari
. Pentrucerinta 1
mesajul codificat va fi afisat tot culitere mari
Exemplu
adfgx.in
1 abcde fghij klmno pqrst uvwxy pbinfo romaniiatacacetatea
adfgx.out
FAGAFAA FDGAGA FFAAAG XGAFXX FGXAXX GADAAAA