Polybius

Time limit: 0.1s
Memory limit: 4MB
Input: polybius.in
Output: polybius.out

Polybius

Cifrul Polybius este un cifru folosit de Grecii Antici care are la bază un tabel de 55 linii și 55 coloane pentru a cripta sau decripta un șir de caractere. Pentru criptare, luăm fiecare caracter din șir și afișăm linia și coloana din tabel unde se află caracterul. Pentru decriptare afișăm caracterul care se află în tabel la linia și coloana dată.

De exemplu, folosind tabelul:

# 1 2 3 4 5
1 A B C D E
2 F G H I K
3 L M N O P
4 Q R S T U
5 V W X Y Z

Împreună cu șirul INF, afișăm 243321243321 deoarece litera I se află pe poziția (2,4)(2, 4), litera N se află pe poziția (3,3)(3, 3) iar litera F se află pe poziția (2,1)(2, 1).

Cerința

Se dă un număr pp, un șir de caractere tt de 2525 de caractere corespunzător tabelului și un șir de caractere ss. Să se determine:

  1. Pentru p=1p = 1, să se cripteze șirul ss, format doar din litere mari, folosind tabelul tt.
  2. Pentru p=2p = 2, să se decripteze șirul ss, format doar din cifre, folosind tabelul tt.

Date de intrare

Fișierul de intrare polybius.in conține pe prima linie numărul pp, pe a doua linie șirul tt format din 2525 de caractere, reprezentând toate elementele tabelului, de la stânga la dreapta și de sus în jos. A treia linie șirul de litere ss care trebuie criptat, dacă p=1p=1, respectiv șirul de cifre care trebuie decriptat, dacă p=2p=2.

Date de ieșire

  • Pentru p=1p = 1, fișierul de ieșire polybius.out va conține pe prima linie rezultatul criptării. Cifrele se afișează fără spațiu între ele.
  • Pentru p=2p = 2, fișierul de ieșire polybius.out va conține pe prima linie rezultatul decriptării.

Restricții și precizări

  • 1p21 \leq p \leq 2;
  • lungimea șirului tt este de 2525 de caractere;
  • 1lungimea șirului de litere s500 0001 \leq \text{lungimea șirului de litere s} \leq 500 \ 000;
  • Se garantează că toate caracterele din ss sunt incluse în șirul tt și caracterele din tt sunt distincte două câte două.
  • O literă din alfabet va lipsi întotdeauna din tabel, fiind un tabel 5x5 iar alfabetul are 2626 de caractere.

Exemplul 1:

polybius.in

1
ABCDEFGHIKLMNOPQRSTUVWXYZ
ANAAREMERE

polybius.out

11331111421532154215

Exemplul 2:

polybius.in

2
ABCDEFGHIKLMNOPQRSTUVWXYZ
11331111421532154215

polybius.out

ANAAREMERE

Explicație

Tabelul din exemple corespunzător șirului este acesta:

# 1 2 3 4 5
1 A B C D E
2 F G H I K
3 L M N O P
4 Q R S T U
5 V W X Y Z

Problem info

ID: 5

Editor: AlexVasiluta

Author:

Log in or sign up to be able to send submissions!