Cerinţă
În criptografia clasică, cifrul trifid extinde conceptul de cifru la o a treia dimensiune permiţând fiecărui simbol să fie “divizat” în 3
elemente în loc de 2
.
Pentru început avem un alfabet de forma 3x3x3
care conține un caracter care nu este literă.
Prim parte:
# 1 2 3
1 f j o
2 r x c
3 y b s
A doua parte:
# 1 2 3
1 v z l
2 g d p
3 m w t
A treia parte:
# 1 2 3
1 e u q
2 n h a
3 . k i
Pentru fiecare caracter, codul lui are cifra sutelor este egală cu numărul de ordine al matricii în care se află,cifra zecilor este numărul de ordine al coloanei și cifra unităților numărul de ordine al liniei.De exemplu codul pentru u
este 321
și pentru b
este 123
.
a n a a r e m e r e
3 3 3 3 1 3 2 3 1 3
3 1 3 3 1 1 1 1 1 1
2 2 2 2 2 1 3 1 2 1
Apoi sunt citite pe linii:
333 313 231 331 331 111 112 222 213 121
i . l q q f r d m j
Dându-se un număr c,alfabetul scris pe o matrice 3x9
(pe care o împarțim in 3
submatrici identice) și un mesaj:
- pentru
c=1
, să se afișeze mesajul criptat; - pentru
c=2
, să se afișeze mesajul decriptat;
Date de intrare
Fișierul de intrare trifid.in
conține pe prima linie numărul c
, un alfabet scris pe o matrice 3x9
și un mesaj.
Date de ieșire
Fișierul de ieșire trifid.out
va conține mesajul criptat sau decriptat în functie de caz.
Restricții și precizări
1≤
lungimea mesajului≤10000
- mesajul nu conține spații
Exemplul 1:
trifid.in
1 fjovzleuq rxcgdpnha ybsmwt.ki anaaremere
trifid.out
i.lqqfrdmj
Exemplul 2:
trifid.in
2 fjovzleuq rxcgdpnha ybsmwt.ki i.lqqfrdmj
trifid.out
anaaremere