Pentru scrierea mesajelor soldaţii dintr-o unitate militară folosesc 9
litere mici: a
, e
, i
, o
, u
, m
, n
, r
, s
şi caracterul spaţiu. Aceste litere sunt codificate cu ajutorul cifrelor 1
, 2
, …, 9
(în ordinea de mai sus), iar pentru caracterul spaţiu se foloseşte cifra 0
. Astfel codificarea textului ana are mere
se poate realiza prin numărul natural 171018206282
.
Pentru a mări gradul de securitate a mesajelor transmise soldaţii relizează o supracodificare, înlocuind fiecare cifră k
folosită la codicare cu puterea 2
k
. Astfel textul anterior se supracodifică astfel: 2128212256416442564
.
Cerința
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, n
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 m
de texte ce corespund supracodificării date, iar pe următoarele m
linii, textele, fiecare dintre acestea pe câte o linie, în ordine lungo-lexicografică.
Restricții și precizări
0< n < 83
- Pentru două texte
u=
u
1
u
2
...
u
a
şiv=
v
1
v
2
...
v
b
, avem cău
este înaintea luiv
în ordine lungo-lexicografică, dacăa<b
sau dacăa=b
şi există un indice1≤i≤a
cu proprietatea cău
1
=v
1
, … ,u
i-1
=v
i-1
,u
i
=v
i
. Ordinea caracterelor este cea dată de codurile ASCII. De exemplu, în ordine lungo-lexicografică, textulaerss
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
70
.
Exemplu:
codif.in
19 2128212256416442564
codif.out
4 ana are mere ana areoeere a aia are mere a aia areoeere