Većina ljudi misli da se špijuni nalaze samo u filmovima o Džejmsu Bondu. Međutim, da to nije tačno mogli su se uveriti i domaći bezbedonosni agenti koji su u jednom skladištu pronašli mašinu za kriptovanje, koju koriste strani špijuni. Oni su i ranije persretali poruke, ali nisu mogli ni da shvate kako su kriptovane. Sada su, međutim, pronašli sistem i zamolili su vas da napišete program koji će automatski dekriptovati presretnute poruke.
Princip rada mašine je sledeći: ulazni podataka je poruka koja se sastoji samo od malih slova latinice S1 = s1s2...sN . Mašina zatim generiše sve ciklične permutacije S2 = s2s3...sNs1, S2 = s3s4...sNs1 s2, ..., SN = sNs1s2...sN-1 i sortira ih u leksikografskom poretku. Na ovaj način se dobija matrica dimenzija NхN (u i-toj vrsti matrice je i-ta po redu permutacija u sortiranom nizu permuacija, a u okviru jedne vrste elementi su pojedinačna slova u okviru permutacije koja se nalazi u toj vrsti). Kodirana poruka se sastoji od rednog broja vrste (označimo ga sa K) u kojoj se nalazi originalna poruka i spiska slova koja se nalaze u poslednjoj koloni matrice. Evo primera. Za poruku S1 = abracadabra imamo sledeći niz permutacija (nakon sortiranja):
1. aabracadabr = S11 2. abraabracad = S8 3. abracadabra = S1 4. acadabraabr = S4 5. adabraabrac = S6 6. braabracada = S9 7. bracadabraa = S2 8. cadabraabra = S5 9. dabraabraca = S7 10. raabracadab = S10 11. racadabraab = S3
Prema tome, šifrovana poruka je: 3 rdarcaaaabb.
Ulaz:
U prvom redu standardnog ulaza nalazi se prirodan broj K (redni broj vrste matrice u kojoj se nalazi originalna poruka). U drugom redu nalazi se N (1 < N ≤ 100000) slova koji predstavljaju zadnju kolonu matrice. Između slova nema razmaka.
Izlaz:
U prvom redu standardnog izlaza treba ispisati originalnu poruku.
Primer:
standardni ulaz | standardni izlaz | |
---|---|---|
3 rdarcaaaabb |
abracadabra |
Comments