== include(page="template/taskheader" task_id="mesaj1") ==
Maria și Ionuț doresc să comunice între ei prin bilețele. Pentru ca mesajele lor să nu fie înțelese și de ceilalți colegi, ei se hotărăsc să le codifice. Pentru a codifica un mesaj, Maria și Ionuț procedează astfel:
* aleg împreună un cuvânt s numit cheie format din p litere diferite două câte două;
* împart mesajul pe care doresc să-l transmită între ei în secvențe de caractere alăturate de lungime p, cu excepția ultimei secvențe care poate avea mai puțin de p caractere;
* scriu pe foaie cuvântul cheie ales;
* sub cuvântul cheie ales se scriu secvențele de lungime p determinate anterior, în ordinea obținerii lor;
* mesajul codificat se obține astfel:
o se parcurge tabelul obținut anterior, pe coloane, de sus în jos;
o ordinea de parcurgere a coloanelor este ordinea alfabetică a literelor din cuvântul cheie;
1. aleg împreună un cuvânt s numit cheie format din p litere diferite două câte două;
2. împart mesajul pe care doresc să-l transmită între ei în secvențe de caractere alăturate de lungime p, cu excepția ultimei secvențe care poate avea mai puțin de p caractere;
3. scriu pe foaie cuvântul cheie ales;
4. sub cuvântul cheie ales se scriu secvențele de lungime p determinate anterior, în ordinea obținerii lor;
5. mesajul codificat se obține astfel:
i) se parcurge tabelul obținut anterior, pe coloane, de sus în jos;
ii) ordinea de parcurgere a coloanelor este ordinea alfabetică a literelor din cuvântul cheie;
h2. Cerință:
Scrieți un program care să determine litera din mesajul codificat care apare de cele mai puține ori, iar dacă sunt mai multe astfel de litere, prima dintre acestea în ordine alfabetică și să realizeze decodificarea unui mesaj codificat în modul prezentat anterior.
h2. Date de intrare
Fișierul de intrare $mesaj1.in$ ...
Fișierul de intrare mesaj1.in conține:
- pe prima linie numărul p de caractere din cheie;
- pe a doua linie cuvântul cheie ales de Maria și Ionuț;
- pe a treia linie numărul n de caractere din mesajul codificat;
- pe a patra linie mesajul codificat.
h2. Date de ieșire
În fișierul de ieșire $mesaj1.out$ ...
Fișierul de ieșire mesaj1.out va conține:
- pe prima linie litera din mesajul codificat care apare de cele mai puține ori în mesajul codificat; dacă sunt mai multe astfel de litere, prima dintre acestea în ordine alfabetică;
- pe a doua linie mesajul decodificat.
h2. Restricții
* $... ≤ ... ≤ ...$
• Cuvântul cheie conține numai litere mari ale alfabetului englez (A, B, C,...,Z) și are maxim 26 de litere;
• Mesajul codificat conține litere mari ale alfabetului englez, cuvintele sunt separate prin unul sau mai multe spații;
• Lungimea mesajului codificat nu depășește 2000 de caractere.
• Se acordă punctaje parțiale:
20% pentru afișarea valorii corecte pe prima linie a fișierului mesaj1.out (cerința a)
80% pentru afișarea corectă a mesajului pe linia a doua a fișierului mesaj1.out (cerința b)
h2. Exemplu
table(example).
|_. mesaj1.in |_. mesaj1.out |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
| 8
COMPUTER
44
SAAO T PTDMCOAANCU DNIICL LFALIIEASMA REINAO
| F
SUCCES LA OLIMPIADA NATIONALA DE INFORMATICA
|
h3. Explicație
Maria și Ionuț aleg cuvântul cheie COMPUTER
Mesajul pe care doresc să-l codifice este SUCCES LA OLIMPIADA NATIONALA DE INFORMATICA
Tabelul obținut este următorul:
C O M P U T E R
S U C C E S L
A O L I M P I
A D A N A T I
O N A L A D E
I N F O R M A
T I C A
Litera cerută este F și mesajul codificat este SAAO T PTDMCOAANCU DNIICL LFALIIEASMA REINAO
== include(page="template/taskfooter" task_id="mesaj1") ==