\begin{tutorial}{Compact Encoding}

{
    \parindent=1cm
    \begin{tabular}{l@{\extracolsep{1cm}}l}
         Идея: & Дмитрий Штукенберг\\
         Разработка: & Дмитрий Штукенберг\\
     \end{tabular}
}

В задаче (если опустить подробности) требуется преобразовать значение в 128-ричную систему счисления (7 битов как раз образуют одну 128-ричную цифру). 

Это можно сделать стандартным образом, через печать остатков от последовательного деления на 128, но с двумя отличиями:
\begin{enumerate}
\item Ко всем результатам, кроме самого первого (младшие 7 бит), нужно прибавить 128. 
\item Порядок байтов от старшего к младшему (``big-endian'') требует в какой-то момент развернуть результат в обратном порядке (первый полученный остаток должен быть напечатан последним). Это можно сделать через векторы, а можно на уровне арифметики: сперва стандартным образом вычислим длину 128-ричного представления числа, а затем будем печатать отдельные значения в нужном порядке, тогда значение в 128-ричном разряде $k$ будет равно $\lfloor \frac{n}{2^{7k}} \rfloor\ \text{mod}\ 128$.
\end{enumerate}

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

\end{tutorial}
