Незнайка сконструировал компьютер – умножитель. Компьютер имеет два регистра A
и B
по 24 двоичных разряда каждый и поддерживает следующую систему команд:
<N+
Осуществить сдвиг двоичной записи числа в регистре A
на N
бит влево (в освобождающиеся справа позиции записываются значения 0). Затем сложить значение, полученное в регистре A
со значением, занесенным в регистр B
и записать результат в регистр B
. N
– целое неотрицательное число. После завершения команды регистр A
содержит результат сдвига.
M{...}
Выполнить M
раз последовательность команд, заключенную в фигурные скобки. М не может превышать 10.
Написав программу для этого компьютера, можно выполнить операцию умножения целого положительного числа, помещаемого в регистр A
на любое целое положительное число (если не возникнет переполнение одного из регистров в процессе вычислений). Результат по завершении программы будет находиться в регистре B
. Легко заметить, что выполнив, например, программу 2{<0+<1+}<2+
можно получить в регистре B
результат умножения числа, помещаемого в регистр A
на 2510
. Также отметим, что такого же результата можно добиться, выполнив программу и с меньшим количеством символов, например <0+<3+<1+
.
Известно, что в регистр A
поместили число, не превосходящее 256010
. Составьте и напишите в ответе программу, содержащую минимально возможное количество символов, которая позволит вычислить результат умножения числа, помещенного в регистр A
на 655310
. Перед началом выполнения программы значение регистра B
равно нулю.