Fișierul intrare/ieșire cezar1.in, cezar1.out Sursă ONI 2005 clasa a 7-a
Autor Marinel Șerban Adăugată de avatar dumitriu_razvan Razvan Dumitriu dumitriu_razvan
Timp de execuție pe test 0.1 sec Limită de memorie 2048 KB
Scorul tău N/A Dificultate stea de rating de tip fullstea de rating de tip emptystea de rating de tip emptystea de rating de tip emptystea de rating de tip empty
open book Poți vedea testele pentru această problemă accesând atașamentele .

Cezar1 (clasa a 7-a)

Una dintre cele mai vechi metode de criptare, cunoscută sub numele de codificare Cezar, presupune următoarele: cunoscându-se cele 26 de litere mari ale alfabetului și un număr natural k, numit cheie, se înlocuiește fiecare literă din textul care trebuie codificat cu cea de a k-a literă care o urmează în alfabet, spațiile dintre cuvinte rămânând nemodificate. Astfel, dacă trebuie codificat textul CODIFICARE CEZAR cu cheia k=5, se va obține textul codificat HTINKNHFWJ HJEFW. Se observă că, în cazul în care șirul literelor din alfabet se termină, se reia numărarea de la început (circular).

Acest gen de codificare este însă extrem de ușor de ″spart″. Să ne imaginăm atunci un alt mod de codificare.

Presupunem, ca și în cazul de mai sus, că textul de codificat conține doar litere mari și spații. Pentru codificare se procedează astfel:
1. se elimină spațiile
2. se împarte textul obținut în segmente de câte 10 litere și se așează segmentele unul sub altul; ultimul segment poate fi mai scurt
3. se alege o secvență de 10 numere naturale (10 chei) k1, k2, ..., k10 și se codifică fiecare coloană utilizând codificarea Cezar cu cheia corespunzătoare coloanei (k1 – coloana 1, k2 -coloana 2, ...)
4. se reface textul punând segmentele la locul lor apoi spațiile la locul lor
De exemplu, dacă avem de codificat textul OLIMPIADA NATIONALA DE INFORMATICA DE LA GALATI se va obține, pe rând, la cei patru pași

1. OLIMPIADANATIONALADEINFORMATICADELAGALATI
2. 
OLIMPIADAN
ATIONALADE
INFORMATIC
ADELAGALAT
I

3. Fie cheile alese (k1, k2, ..., k10) = (1,2,1,3,1,4,1,5,0,6)

PNJPQMBIAT
BVJRMEMFDK
JPGRSQBYII
BFFDBKBQAZ
J

4. PNJPQMBIATBVJRMEMFDKJPGRSQBYIIBFFOBKBQAZJ
PNJPQMBIA TBVJRMEMF DK JPGRSQBYIIB FF OB KBQAZJ

Cerință

Scrieți un program care să realizeze decodificarea unui text codificat în modul arătat mai sus.

Date de intrare

Fișierul de intrare cezar1.in conține pe prima linie textul codificat. Linia a doua a fișierului va conține 10 numere naturale separate prin câte un spațiu reprezentând cheile de codificare.

Date de ieșire

În fișierul de ieșire cezar1.out va conține pe prima linie textul decodificat.

Restricții

  • Lungimea textului codificat nu depășește 255 caractere
  • Caracterele folosite sunt litere mari ale alfabetului și caracterul spațiu
  • Cheile au valori cuprinse între 0 și 25
  • Literele alfabetului sunt, în ordine:
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Exemplu

cezar1.in cezar1.out
PPLKNS NIUKUK
1 2 3 4 5 6 7 8 9 10
ONIGIM GALATI

Trebuie să te autentifici pentru a trimite soluții. Click aici

Indicii de rezolvare

Arată 3 categorii