АВТ
Язык:

Дистанционный практикум по программированию

Задачи Online статус Соревнования
Новости Справка СДО
 
Здравствуйте, Гость! Войдите с паролем или зарегистрируйтесь.

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

Ограничение времени: 1 сек.
Ограничение памяти:262144 КБайт
Баллы:100
Статистика Послать на проверку Задачу добавил debug

Как известно, для обороны границ японские инженеры разрабатывают огромных боевых человекоподобных роботов. Каждый такой робот управляется японским компьютером. Понятно, что для повышения эффективности робота программа в компьютере должна быть как можно более оптимальной, чтобы компьютер мог выполнять как можно больше программ за как можно меньшее время.

На данный момент японским программистам задали следующую задачу (её смысл секретен, поэтому здесь его описывать нельзя): изначально в памяти компьютера находится единственное число x. Требуется получить в его памяти следующие числа: a1x, a2x, ..., anx. При этом компьютер может выполнять следующие операции:

  1. Сложение двух чисел
  2. Вычитание двух чисел
  3. Побитовый сдвиг влево (сдвиг на k бит эквивалентен умножению на 2k)

Все полученные промежуточные значения сохраняются в памяти, так что ими можно пользоваться при вычислении других значений.

При вычислениях никогда не должно получаться значение большее, чем 42x. Гарантируется, что при выполнении этого ограничения, в компьютере не происходит переполнений. Также, компьютер не может работать с отрицательными числами, так что вычитать большее число из меньшего также запрещено.

Порядок, в котором в памяти будут появляться числа a1x, a2x, ..., anx, не имеет значения.

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

В первой строке находится число n — количество требуемых значений (1 ≤ n ≤ 41). Во второй строке находится n чисел ai (2 ≤ ai ≤ 42). Все ai различны. Само число x вам не дано, так что ваша последовательность операций должна быть верной для любого x.

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

В первой строке выведите единственное число — минимальное количество требуемых операций. Далее выведите требуемые операции в следующем формате:

  1. Сдвиг влево ax на k бит: "a<<k"
  2. Сложение ax и bx: "a+b"
  3. Вычитание ax из bx: "b-a"

Запись операций не должна содержать пробелов.

Примеры

Входные данные
3
3 5 18
Выходные данные
5
1<<1
1<<4
1+2
2+3
2+16
Входные данные
1
29
Выходные данные
4
1<<1
1<<5
1+2
32-3
Входные данные
4
12 19 41 42
Выходные данные
8
1<<1
1<<4
1+2
3<<2
3+16
19<<1
3+38
1+41


Статистика Послать на проверку Обсуждение задачи Автор/источник:
Задачи с соревнований и сборов / Сборы в Перми 2009 / 10.07.09 Малый контест /
1616. A - Союзы 1617. 1618. C - Произведение графов
 
время генерации 0.109 сек.
© Copyright ВоГУ, АВТ, Носов Д.А., Андрианов И.А.