Вычисления по основанию K

ограничение времени на тест: 0.5 сек.
ограничение памяти на тест: 4096 KB.

ввод: input.txt
вывод: output.txt

 

У вас есть замечательный калькулятор, работающий по основанию K (2 <= K <= 36). Для записи чисел используются цифры "0"..."9" и буквы "A"..."Z", где "A" является аналогом цифры "10", "B" - "11" и т.д. Калькулятор может складывать, вычитать числа и умножать числа. Вычисления производятся так, что при нажатии клавиш "+", "-" или "*" соответствующая операция применяется к тому, что в настоящий момент показывает дисплей (как левый операнд) и следующему числу. Новый результат выводится на дисплей. Все вычисления заканчиваются нажатием "=". Например, если K=10, то результатом действий "10+10*2=" будет "40". Ваша задача по входной цепочке вычислить результат действий.


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

В первой строке записано K. Далее следуют строки, в которых записаны либо числа, либо знаки операций. Входная цепочка заканчивается операцией "=". Числа и знаки операций чередуются в правильном порядке. Любое число во входном файле записывается менее чем 11 символами. Все промежуточные результаты не превосходят по длине 150 символов (по основанию K), количество строк в файле не более 200.


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

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


Пример


Ввод

2
1
+
10
*
11
-
1
=


Вывод

8
















Гиперкалькулятор

ограничение времени на тест: 3 сек.
ограничение памяти на тест: 32768 KB.

ввод: input.txt
вывод: output.txt

 

Напишите гиперкалькулятор.


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

Первая строка входного файла содержит N - количество переменных, которые используются в выражении, (1 <= N <= 26, переменные представляют собой маленькие буквы латинского алфавита). Следующие N строк содержат значения переменных, i-я строка содержит значение переменной, которая обозначается i-й буквой латинского алфавита (буквы нумеруются с 1: a - 1, b - 2,..., z - 26). Все значения не превышают по модулю 10^1000 и записаны без ведущих нулей.
Следующая строка входного файла содержит выражение, содержащее только переменные, символы +, -, *, [, ], (,), которые имеют естественный приоритет. () изменяют порядок выполнения операций. Выражение, заключенное в квадратные скобки, возводится в квадрат. Длина выражения не превышает ста тысяч символов.


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

Выведите в выходной файл значение выражения. Гарантируется, что ответ по не превышает 10^1000 по модулю. Ведущие нули не выводите.


Пример


Ввод

3
1
2
3
a*(b+c)*(a*a+b*--+c)-c


Вывод

32













Калькулятор

ограничение времени на тест: 0.5 сек.
ограничение памяти на тест: 4096 KB.

ввод: input.txt
вывод: output.txt

 

Вам необходимо написать программу, которая по заданным значениям переменных получает значение выражения S. Если в S присутствует переменная, значение которой не задано, то ее следует считать раной 0. В выражении могут встречаться вещественные константы, переменные с именами от 'a' до 'z', знаки '+', '-', '*', '/', функции Sin, Cos, Abs, Ln, Exp, а также могут быть скобки. Функции записываются только так (т.е. первая буква заглавная, а остальные прописные) и после них обязательно идут скобки. Известно что, если последовательно, по приоритету операций, вычислять S, то промежуточные данные (а также ответ) не превосходят по абсолютной величине 10^9.


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

В первой строке записано число N - количество заданных переменных. Далее идет N строк вида <переменная>=<значение>. В следующей строке записано S. Известно, что S состоит из не более чем 250 символов. Содержащиеся в S пробелы следует игнорировать. Можно считать, что заданно S корректно (т.е. правильно расставлены скобки и т.д.).


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

Выведите значение S c точностью до 2х знаков после запятой. Если S не может быть вычислено из-за деления на 0 или взятия логорифма из неположительного числа, то следует вывести слово "Error".


Пример


Ввод

2
x=-2
y=0.5
Exp(Ln(Sin(y))*(- x))+Exp(Abs(x)*Ln(Cos(y)))+z-1/3


Вывод

0.67











Маляр и программирование

ограничение времени на тест: 2 сек.
ограничение памяти на тест: 640 KB.

ввод: input.txt
вывод: output.txt

 

Мэр города Берлянска решил построить перед своим домом забор из N деревянных досок и нанять лучшего маляра города для его покраски. Поскольку забор должен стать главной достопримечательностью города, лучший дизайнер города для каждой доски назначил тщательно выбранный цвет, в который она должна быть покрашена.
Для покраски главный маляр решил применить новейшую технологию, специально разработанную им для выполнения этого задания. Покраской забора будет заниматься специальный робот, который за один час может покрасить произвольный отрезок забора (набор соседних досок) в некоторый цвет. Поскольку задание должно быть выполнено как можно быстрее, требуется составить программу для робота, которая позволит достичь требуемой раскраски за минимальное время.
Оставить какую-то из досок непокрашенной, естественно, запрещается.


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

В первой строке входного файла записано число N (1 <= N <= 30), где N количество досок в заборе. Вторая строка содержит строку из N символов, описывающую требуемую покраску забора. Цвета обозначаются заглавными латинскими буквами.


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

В первой строке выходного файла выведите M - наименьшее возможное время покраски забора в часах. Следующие M строк должны содержать программу покраски для робота. Каждая строка должна содержать два числа Li и Ri, а также заглавную букву латинского алфавита, задающую цвет Ci и означает, что робот должен покрасить участок забора с Li по Ri доску в цвет Ci (если длина забора N, должно выполняться 1 <= Li <= Ri <= N).


Пример


Ввод

5
ABBCA


Вывод

3
1 5 A
2 3 B
4 4 C















Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: