Time limit 2000/4000/4000/4000 ms. Memory limit 65000/65000/65000/65000 Kb.
Квадрат Полибия - одна из древнейших систем кодирования, предложенная Полибием (греческий историк, полководец, государственный деятель, III век до н. э.).Несмотря на то, что квадрат изначально создавался для кодирования с его помощью можно успешно шифровать. Для того, чтобы зашифровать текст квадратом Полибия нужно сделать несколько шагов:
Шаг 1: Формирование таблицы шифрования
К каждому языку отдельно составляется таблица шифрования с одинаковым (не обязательно) количеством пронумерованных строк и столбцов, параметры которой зависят от его мощности (количества букв в алфавите). Берутся два целых числа, произведение которых ближе всего к количеству букв в языке — получаем нужное число строк и столбцов. Затем вписываем в таблицу все буквы алфавита подряд — по одной на каждую клетку. При нехватке клеток можно вписать в одну две буквы (редко употребляющиеся или схожие по употреблению).
Латинский алфавит
В современном латинском алфавите 26 букв, следовательно таблица должна состоять из 5 строк и 5 столбцов, так как 25=5*5 наиболее близкое к 26 число. При этом буквы I, J не различаются (J отождествляется с буквой I), так как не хватает 1 ячейки:
1 2 3 4 5 |
1 A B C D E |
2 F G H I/J K |
3 L M N O P |
4 Q R S T U |
5 V W X Y Z |
Шаг 2: Принцип шифрования
Указываются соответствующие каждой букве цифры из таблицы. Первой пишется цифра по горизонтали, второй - по вертикали. (A = 11, B = 21…).Полученный код записывается слитно. Полученная последовательность цифр сдвигается циклически влево на один шаг(нечетное количество шагов).Эта последовательность вновь разбивается в группы по два и по таблице заменяется на окончательный шифротекст.
Ваша задача - зашифровать сообщение с помощью квадрата Полибия.
Входные данные
Входной поток содержит исходное сообщение длины S(10 <= S <= 1000).
Во второй строке расположено число k (1 <= k <= 999, нечетное) - количсетво шагов сдвига.
Выходные данные
Выведите одну строку длиной S символов — зашифрованное сообщение.
Примеры
Входные данные | Выходные данные |
SOMETEXT 1 | THXQYLUO |
CIPHER 1 | QWNWFO |
Для отправки решений необходимо выполнить вход.
|