eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач

base64

Требуется написать конвертор в формат \textbf{base64} и из формата \textbf{base64}. Кодирование в формат \textbf{base64} происходит следующим образом: 1. Если длина исходного текста в байтах не делится на \textbf{3}, то он дополняется минимальным количеством нулевых байтов так, чтобы длина делилась на \textbf{3}, количество добавленных байтов запоминается. 2. Текст разбивается на группы по \textbf{3} байта. Каждая группа кодируется отдельно. 3. Из трёх байтов получается \textbf{24}-битное число. Первый байт тройки является старшим, третий --- младшим. 4. \textbf{24}-битное число разбивается на четыре \textbf{6}-битные группы. Старшие \textbf{6} бит определяют первый символ кодирующей четвёрки, младшие \textbf{6} бит --- последний и т.п. 5. Шестёрки битов кодируются символами следующего набора: \textbf{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/} Номер \textbf{0} кодируется буквой '\textbf{A}', номер \textbf{1} буквой '\textbf{B}', номер \textbf{63} символом '\textbf{/}'. 6. Полученные четвёрки символов записываются друг за другом в том же порядке, в каком шли тройки, из которых они были получены. 7. Вспоминается, сколько нулевых символов было добавлено в конец исходного текста на шаге \textbf{1}, и столько последних символов закодированного текста меняются на '\textbf{=}'. 8. Текст разбивается на группы по \textbf{76} символов (в последней может быть меньше) и каждая такая группа записывается в отдельной строчке. Каждая непустая строка должна заканчиваться переводом строки (символы \textbf{13} \textbf{10}). \InputFile В первой строке содержится тип информации во входном файле, вторая строка пустая, далее следует информация, которую нужно закодировать или раскодировать. Если требуется закодировать текст, то файл начинается символами '\textbf{Content-Transfer-Encoding: 8bit}', за которыми следует \textbf{4} символа \textbf{13} \textbf{10} \textbf{13} \textbf{10} --- и весь остаток файла --- набор байтов, подлежащий кодированию. Объём кодируемого текста ("текст" может быть двоичными данными) не превышает \textbf{100 000} байт. Если требуется декодировать текст, то файл начинается символами '\textbf{Content-Transfer-Encoding: base64}', за которыми следует \textbf{4} символа \textbf{13} \textbf{10} \textbf{13} \textbf{10} --- и весь остаток файла --- текст, закодированный \textbf{base64}. Кодированный текст получен из исходного, не превышающего \textbf{100 000} байт. \OutputFile Выведите строку с противоположным типом информации, затем пустую строку, затем результат кодирования или декодирования. Если требовалось закодировать текст, то выходные данные должны начинаться символами '\textbf{Content-Transfer-Encoding: base64}', за которыми должны следовать \textbf{4} символа \textbf{13} \textbf{10} \textbf{13} \textbf{10} --- и далее до конца файла должен содержаться текст, закодированный \textbf{base64}. Если требовалось раскодировать текст, то выходные данные должны начинаться символами '\textbf{Content-Transfer-Encoding: 8bit}', за которыми должны следовать \textbf{4} символа \textbf{13} \textbf{10} \textbf{13} \textbf{10} --- и далее до конца файла должен содержаться раскодированный текст.
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
Content-Transfer-Encoding: 8bit

Vologda SPU
Выходные данные #1
Content-Transfer-Encoding: base64

Vm9sb2dkYSBTUFU=
Автор Владимир Пинаев, Фёдор Меньшиков