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=
Автор Володимир Пінаєв, Федір Меньшико