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

Японский компьютер

Японский компьютер

Как известно, для обороны границ японские инженеры разрабатывают огромных боевых человекоподобных роботов. Каждый такой робот управляется японским компьютером. Понятно, что для повышения эффективности робота программа в компьютере должна быть как можно более оптимальной, чтобы компьютер мог выполнять как можно больше программ за как можно меньшее время. На данный момент японским программистам задали следующую задачу (её смысл секретен, поэтому здесь его описывать нельзя): изначально в памяти компьютера находится единственное число \textbf{x}. Требуется получить в его памяти следующие числа: \textbf{a_1x}, \textbf{a_2x}, ..., \textbf{a_nx}. При этом компьютер может выполнять следующие операции: \begin{itemize} \item Сложение двух чисел \item Вычитание двух чисел \item Побитовый сдвиг влево (сдвиг на \textbf{k} бит эквивалентен умножению на \textbf{2^k}) \end{itemize} Все полученные промежуточные значения сохраняются в памяти, так что ими можно пользоваться при вычислении других значений. При вычислениях никогда не должно получаться значение большее, чем \textbf{42x}. Гарантируется, что при выполнении этого ограничения, в компьютере не происходит переполнений. Также, компьютер не может работать с отрицательными числами, так что вычитать большее число из меньшего также запрещено. Порядок, в котором в памяти будут появляться числа \textbf{a_1x}, \textbf{a_2x}, ..., \textbf{a_nx}, не имеет значения. \InputFile В первой строке находится число \textbf{n} - количество требуемых значений (\textbf{1} ≤ \textbf{n} ≤ \textbf{41}). Во второй строке находится \textbf{n} чисел \textbf{a_i} (\textbf{2} ≤ \textbf{a_i} ≤ \textbf{42}). Все \textbf{a_i} различны. Само число \textbf{x} вам не дано, так что ваша последовательность операций должна быть верной для любого \textbf{x}. \OutputFile В первой строке выведите единственное число - минимальное количество требуемых операций. Далее выведите требуемые операции в следующем формате: \begin{itemize} \item Сдвиг влево \textbf{ax} на \textbf{k} бит: \textbf{a}<<\textbf{k} \item Сложение \textbf{ax} и \textbf{bx}: \textbf{a+b} \item Вычитание \textbf{ax} из \textbf{bx}: \textbf{b-a} \end{itemize} Запись операций не должна содержать пробелов.
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
3
3 5 18
Выходные данные #1
5
1<<1
1<<4
1+2
2+3
2+16
Автор Денис Денисов, Юрий Петров
Источник ЛКШ-2011 Севастополь 08.08.2011 д.2 1-я лига