Сначала Base64, потом Цезарь

Просмотр в формате PDF

Submit solution


Очки: 130
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Problem type
Allowed languages
C++, Python

Агент перехватил сообщение, защищённое двумя слоями.

Сначала исходный текст был сдвинут шифром Цезаря на k позиций вперёд по алфавиту. После этого получившуюся строку упаковали в Base64.

В распоряжении агента есть число k и итоговая строка в Base64. Чтобы восстановить исходное сообщение, нужно снять защиту в обратном порядке: сначала декодировать Base64, затем выполнить обратный сдвиг Цезаря на k позиций.

Известно, что после декодирования Base64 получается строка, состоящая только из заглавных латинских букв и пробелов.

Требуется вывести исходный открытый текст.

Входные данные

Первая строка содержит целое число k (0 <= k <= 25).

Вторая строка содержит строку в кодировке Base64.

Выходные данные

Выведите исходный открытый текст.

Открытый текст может содержать значимые пробелы, в том числе ведущие и концевые. Их нужно выводить дословно, без обрезки и каких-либо изменений.

Ограничения

  • 0 <= k <= 25
  • после декодирования Base64 получается текст только из символов 'A''Z' и пробелов
  • открытый текст может начинаться и/или заканчиваться пробелами, и эти пробелы являются частью ответа
  • ввод осуществляется через стандартный ввод
  • вывод осуществляется через стандартный вывод

Примеры

Пример 1

Входные данные

0
QQ==

Выходные данные

A
Пример 2

Входные данные

1
QSA=

Выходные данные

Z

Здесь строка Base64 QSA= декодируется в A (буква A и пробел). Обратный сдвиг Цезаря на 1 затрагивает только букву: A переходит в Z, а пробел остаётся пробелом. Поэтому в ответе ровно два символа — Z и завершающий пробел; этот концевой пробел обязателен.


Комментарии

Еще нет ни одного комментария.