Петра попросили вычислить значение многочлена степени N, зная его коэффициенты и значение аргумента x.
У Петра есть калькулятор, работающий в режиме обратной польской записи, способный складывать и умножать числа любой длины. Помогите Петру найти правильную и в то же время самую короткую последовательность операций работы с этим калькулятором, вычисляющую значение многочлена при любых значениях коэффициентов и аргумента x.
Выражение, записанное в режиме обратной польской записи, состоит из операндов и знаков операций; причем операнды всегда предшествуют знаку операции. Скобки опускаются, поскольку значение и без них однозначно вычисляется по следующему алгоритму:
- Если выражение состоит только из одного операнда, то значением выражения является значение этого операнда.
- Иначе:
- найдите в выражении первый слева знак операции
- выполните эту операцию с теми двумя операндами, которые стоят слева от этого знака
- запишите результат операции вместо двух операндов и знака операции
- повторите шаги 1-2
- Если на каком-то шаге не получается применить правила 1-2, то исходное выражение было некорректным.
Например, выражение «a b c d + * e + /», записанное в обратной польской записи, в обычном виде записывается как «a / (b * (c + d) + e)».
Исходные данные
В единственной строке записано целое число N – степень многочлена (1 ≤ N ≤ 1000).
Результат
Выведите последовательность минимальной длины, соответствующую многочлену степени N в обратной польской записи. Многочлен имеет вид a0xN+a1xN−1 + … aN. В последовательность должны входить только знаки операций «+» и «*», заглавная латинская буква «X» и неотрицательные целые числа, задающие номера коэффициентов многочлена (коэффициент ai обозначается просто числом i).
Каждый элемент последовательности (знак операции, символ «X», номер коэффициента) должен быть записан в отдельной строке.
Пример
исходные данные | результат |
---|
1
| 0
X
*
1
+
|
Источник задачи: Rybinsk State Avia Academy