Hacker - PilsProg

Transkript

Hacker - PilsProg
Hacker
Na Západočeské univerzitě v Plzni byl v univerzitní počítačové síti objeven hacker.
Každý týden vysílal jakési záhadné nečitelné zprávy přímo v síti webnet. Aby bylo
možné zjistit, jaký text zprávy obsahovaly, je nutné je dešifrovat. O dešifrování byli
požádáni přední počítačoví odborníci z Katedry informatiky a výpočetní techniky.
Na síti byl následně objeven i šifrovací program, který pracuje podle dále uvedeného
postupu. Jako vstup přichází do programu jeden řetězec S1 = s1s2...sN. Program pak
vytváří všechny cyklické permutace
S2 = s2s3...sNs1, ..., SN = sNs1s2...sN-1.
Poté jsou všechny řetězce S1, S2, ..., SN seřazeny vzestupně lexikograficky a vypsány
pod sebe každý na novou řádku. Tak vznikne dvourozměrné pole o rozměrech N x N.
Jedna z řádek tohoto pole obsahuje i vstupní zprávu S1. Číslo této řádky a poslední
sloupec vzniklého pole jsou výstupem šifrovacího programu.
Číslo ani délka řetězce nejsou větší než 10 000. Řetězec může obsahovat jen znaky AZ, a-z a podtržítko („_“), lexikografické seřazení je následujícím způsobem:
ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
Například pro slovo S1 = abracadabra vzniknou následující permutace:
aabracadabr = S11
abraabracad = S8
abracadabra = S1
acadabraabr = S4
adabraabrac = S6
braabracada = S9
bracadabraa = S2
cadabraabra = S5
dabraabraca = S7
raabracadab = S10
racadabraab = S3
Výstupem pak bude číslo 3 a řetězec rdarcaaaabb (poslední sloupec vyznačený
tučně).
Pomůžete odborníkům z KIVu najít dešifrovací algoritmus těchto zpráv?
Vstup
Na vstupu jsou dvě řádky. První řádka obsahuje výstupní číslo z programu a druhá
řádka obsahuje výstupní řetězec z programu.
Strana 1 (celkem 2)
Výstup
Vypište původní zprávu, která byla šifrována.
Příklad vstupu
3
rdarcaaaabb
Příklad výstupu
abracadabra
Strana 2 (celkem 2)