[C++] Criptografia

La password di questo laboratorio è una stringa di N caratteri minuscoli, alquanto semplice da ricordare ma dato che ci sono molti assistenti tecnici in questa scuola è stato deciso di scriverla in un foglio. Pessima idea! La stringa criptata è finita nelle mani di Edoardo! Sara in grado il giovane studente di decifrarla ed ottenere l’accesso alle preziosissime cartelle sul server?
La stringa criptata è una stringa di L caratteri minuscoli dell’alfabeto latino ed ha la caratteristica di essere palindroma, si può quindi leggere da destra verso sinistra e viceversa senza che cambi. All’ interno di questa stringa alcune lettere sono state sostituite da delle cifre  comprese tra 0 e N-1. La password può essere ricostruita se e solo se tutte le N cifre distinte hanno una corrispondenza con una lettera mantenendo la stringa palindroma.
Scrivi un programma che dato N, L e la stringa criptata ricostruisca la corrispondenza cifra-carattere
La password viene ottenuta concatenando in ordine i caratteri delle corrispondenze

Input
Il programma deve leggere da un file di nome ‘input.txt’. Nella prima riga sono presenti due interi separati da uno spazio: N e L, rispettivamente il numero di cifre incognite e il numero di caratteri della stringa. Nella seconda riga è presente ls stringa di L caratteri senza spazi.

Output
Il programma deve scrivere in un file di nome ‘output.txt’. Deve venire stampata la stringa ‘impossibile’ se non esiste una corrispondenza cifra-carattere 0 se ne esistono molteplici. Altrimenti stampare nel file una stringa di N caratteri: la password decodificata.

Assunzioni
0 < N <= 10
2 <= L <= 200.000 (un caso con L = 50.000.000)
0 <= i < N
L è pari

Esempio
inputfl.txt                     outputflcxt
2  10                            nw
01lrbbrlwn
inputfl.txt                     output .txt
1  10                            impossibile
ebg00hdgbe
inputfl.txt                    output.txt
1  10                           impossibile
0VWqttqWV0

Note
Nel secondo caso non esiste una corrispondenza per la cifra 0. Nel terzo invece ne esistono molteplici.

Qui basta scorrere e sostituire n volte la stringa. Se non ci sono lacune corrispondenze stampare “imossibile”

 

Related Posts Plugin for WordPress, Blogger...