W szyfrze kolumnowym jako klucza używa się permutacji pewnego n elementowego zbioru postaci {1,2,...,n}.
Istnieje wiele metod wygenerowania dowolnej permutacji takiego zbioru. Można posłużyć się tutaj zarówno liczbami pseudolosowymi, jak równiez z góry ustaloną funkcją o nieznanych parametrach czy współczynnikach. W poniższym przykładzie użyta jest funkcja f(n)=an2+b, gdzie a i b są liczbami naturalnymi.
DANE: n - ilość elementów zbioru a, b - współczynniki funkcji WYNIK: tablica t[1..n] zawierająca permutację zbioru {1,2,...,n} ALGORYTM: 1. k:=n 2. Wpisz do tablicy t do kolejnych komórek liczby od 1 do k. 3. Dopóki k>1 wykonuj: a.) wyznacz komórkę tablicy: i:=1+(f(k) mod k) b.) zamień w tablicy t miejscami liczby na pozycjach i i k c.) zmniejsz o jeden k
W celu zaszyfrowania tekstu jawnego wpisujemy go do tablicy w kolejne kolumny a następnie odczytujemy wierszami zgodnie z permutacją wszystkich wierszy wyznaczoną przez funkcję f. Dla uproszczenia przyjmiemy, że tablica składa się z 5 wierszy i 5 kolumn.
a=1 b=10 Tekst jawny=INFORMACJA Tablica: ------- I M N A F C O J R A ------- Permutacja: t = {1, 2, 3, 4, 5} f(5)=1+(5^2+10) mod 5=1 --> 5 2 3 4 1 - wymiana t[1] z t[5] f(4)=1+(4^2+10) mod 4=3 --> 5 2 4 3 1 - wymiana t[3] z t[4] f(3)=1+(3^2+10) mod 3=2 --> 5 4 2 3 1 - wymiana t[2] z t[3] f(2)=1+(2^2+10) mod 2=1 --> 4 5 2 3 1 - wymiana t[1] z t[2] f(1)=1+(1^2+10) mod 1=1 --> 4 5 2 3 1 - wymiana t[1] z t[1] Wypisujemy kolejno wiersze czwarty, piąty, drugi trzeci i pierwszy: Kryptogram=IJRANAFCIM
Napisz program, który zaszyfruje podany tekst szyfrem kolumnowym używając tabelki o wymiarach 5 wierszy i 5 kolumn.
Pierwszy wiersz wejścia zawiera liczby całkowite a i
b z zakresu 1..10.
W wierszu drugim zapisano niepusty tekst o maksymalnej długości 25 znaków.
Kryptogram podanego tekstu.
Dla danych podanych na wejściu:
4 1 OU
Poprawną odpowiedzią jest wyjście:
OU
Jeśli chcesz zobaczyć inny przykład odśwież tę stronę klawiszem F5
Opcje zadania:
Biblioteki : iostream iomanip cmath string Limit czasu : 0.1 s Limit pamięci : 32 MB Słowa niedozwolone :