Pentru scrierea mesajelor soldaţii dintr-o unitate militară folosesc litere mici: a
, e
, i
, o
, u
, m
, n
, r
, s
şi caracterul spaţiu. Aceste litere sunt codificate cu ajutorul cifrelor (în ordinea de mai sus), iar pentru caracterul spaţiu se foloseşte cifra . Astfel codificarea textului ana are mere
se poate realiza prin numărul natural .
Pentru a mări gradul de securitate a mesajelor transmise soldaţii relizează o supracodificare, înlocuind fiecare cifră folosită la codicare cu puterea . Astfel textul anterior se supracodifică astfel: .
Cerinţă
Să se scrie un program care pentru o supracodificare dată, determină textul iniţial. Dacă există mai multe astfel de texte se vor determina toate.
Date de intrare
Fişierul de intrare codif.in
conţine pe prima linie, numărul de cifre folosite la textul supracodificat, iar pe a doua linie conţine supracodificarea.
Date de ieșire
Fişierul de ieşire codif.out
va conţine pe prima linie numărul de texte ce corespund supracodificării date, iar pe următoarele linii, textele, fiecare dintre acestea pe câte o linie, în ordine lungo-lexicografică.
Restricții și precizări
- Pentru două texte şi , avem că este înaintea lui în ordine lungo-lexicografică, dacă sau dacă şi există un indice cu proprietatea că , . Ordinea caracterelor este cea dată de codurile ASCII. De exemplu, în ordine lungo-lexicografică, textul
aerss
este înaintea textuluiaeumr
, şi după textulsun
. - Fiecare linie din fişierul de ieşire va avea sfârşit de linie.
- Pentru toate testele numărul de texte care corespunde aceleiaşi supracodificări este mai mic sau egal cu .
Exemplu
codif.in
19
2128212256416442564
codif.out
4
ana are mere
ana areoeere
a aia are mere
a aia areoeere