Gigel si Ionel se joacă de-a spionii! De aceea ei imaginează o modalitate de a codifica un mesaj astfel încât nimeni să nu îl poată descifra. Toate mesajele lor au lungimea o putere a lui 2
. Ei numerotează literele mesajului începând cu 1
. Apoi separă literele în două categorii: cele cu număr de ordine impar în stânga, cele cu număr de ordine par în dreapta, păstrând ordinea lor. Procedeul continuă pentru fiecare grupă nou rezultată începând cu cea din stânga, până când fiecare grupă obţinută conţine un singur caracter. După terminarea operaţiilor alipesc grupele de câte o literă rezultate, începând de la stânga spre dreapta şi obţin mesajul codificat.
De exemplu pentru mesajul MESAJNECODIFICAT
procedează astfel:
1. numerotează
MESAJNECODIFICAT 123456789...
2. separă
MSJEOIIA EANCDFCT apoi repetă paşii 1 şi 2 pentru 12345678 12345678 fiecare grupă rezultată MJOI SEIA ENDC ACFT 1234 1234 1234 1234 MO JI SI EA ED NC AF CT 12 12 12 12 12 12 12 12 M O J I S I E A E D N C A F C T 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
până se obţine un singur caracter în fiecare grupă şi alipind literele de la stânga spre dreapta rezultă mesajul codificat: MOJISIEAEDNCAFCT
Cerința
Scrieţi un program care să rezolve următoarele două cerinţe:
- dat fiind un mesaj, să determine codificarea acestuia;
- dat fiind un mesaj codificat, să determine decodificarea acestuia.
Date de intrare
Pe prima linie a fişierului de intrare spioni.in
se găseşte un caracter C
sau D
, indicând faptul că se doreşte Codificarea, respectiv Decodificarea mesajului de pe linia a doua. Linia a doua a fişierului de intrare conţine un şir de caractere.
Date de ieșire
Fișierul de ieșire spioni.out
va conține o singură linie pe care se va scrie mesajul codificat (în cazul în care prima linie a fişierului de intrare conţine C
), respectiv mesajul decodificat (în cazul în care prima linie a fişierului de intrare conţine D
).
Restricții și precizări
- Şirul de caractere din fişierul de intrare conţine caractere având coduri ASCII cuprinse între
33
şi127
, lungimea şirului fiind o putere a lui2
cuprinsă între2
şi4096
. - Pentru teste valorând 50% din punctaj fişierul de intrare conţine pe prima linie
C
.
Exemplul 1
spioni.in
C MESAJNECODIFICAT
spioni.out
MOJISIEAEDNCAFCT
Exemplul 2
spioni.in
D MOJISIEAEDNCAFCT
spioni.out
MESAJNECODIFICAT