Шифр Виженера
Просмотр в формате PDFСвязист армейского полка работает с депешами, используя классический шифр Виженера.
Для работы берётся ключ — короткое слово из строчных латинских букв. При шифровании каждая буква депеши сдвигается по английскому алфавиту вперёд на величину, равную позиции соответствующей буквы ключа: a даёт сдвиг 0, b — 1, ..., z — 25. Если ключ короче текста депеши, он повторяется циклически.
Сдвиг применяется только к буквам английского алфавита. Регистр букв должен сохраняться. Все остальные символы — пробелы, цифры, знаки препинания и другие печатные ASCII-символы — передаются без изменений и не учитываются при продвижении по ключу: позиция в ключе увеличивается только при обработке очередной буквы.
При расшифровке выполняется обратная операция: каждая буква сдвигается назад на величину, заданную соответствующей буквой ключа.
Требуется по заданному режиму работы, ключу и тексту депеши вывести результат шифрования или расшифровки.
Входные данные
В первой строке задан режим работы: E — зашифровать депешу, D — расшифровать депешу.
Во второй строке задан ключ key — непустая строка длиной от 1 до 100, состоящая из строчных латинских букв.
В третьей строке задан текст депеши text длиной от 1 до 10^5, состоящий из печатных ASCII-символов.
Выходные данные
Выведите результат обработки — зашифрованный или расшифрованный текст той же длины, что и text.
Ограничения
mode— один символ:EилиD1 <= |key| <= 1001 <= |text| <= 10^5keyсостоит только из строчных латинских буквtextсостоит только из печатных ASCII-символов
Примеры
Пример 1
Входные данные
E
b
Abc XYZ!
Выходные данные
Bcd YZA!
Пример 2
Входные данные
D
az
a-B Z,9
Выходные данные
a-C Z,9
Комментарии