Contest.uni-smr.ac.ru :: соревнования по программированию
Русская версия || English version
Login:
Password:
Забыли пароль?
 пример поиска: Вася Пупкин
 






Задача Е. Играем калькулятор

Задачу добавил: alef

Успешно сдано решений: 30

Во время совместного катания Маша и Витя иногда развлекаются устным счетом. Например, Маша говорит Вите: «Запомни число 12. Так, а теперь запомни еще число 27. И еще число 3. Нет, забудь его. Запомни лучше 5! Запомнил? А теперь сложи два последних числа. И умножь то, что помнишь, на то, что получилось. Сколько?» (Да, 384, Вы не ошиблись). Действий может быть много. В какие-то моменты Маша (или Витя, если ведущим был он) спрашивает «Сколько?» — и они оба хором произносят число. Чаще всего ответы у них совпадают, но когда расходятся — спорить можно до бесконечности, кто и где ошибся: ведь ничего же не записывается.

            Однажды они предложили Пете поиграть вместе с ними. Когда его ответ в очередной раз не совпал с ответом у Маши и у Вити, он предложил все же вести запись действий, чтобы узнать, какой же должен получиться ответ на самом деле.

            Ваша задача — по имеющейся записи получить все ответы на вопросы «Сколько?». Запись велась следующим образом (<число> — некоторое целое число от 0 до 10^8):

push <число> — запомнить число

pop — забыть последнее запомненное число

add — сложить два последних запомненных числа, забыть их и запомнить вместо них результат

sub — вычесть из предпоследнего запомненного числа последнее запомненное, забыть их и запомнить вместо них результат

mul — перемножить два последних запомненных числа, забыть их и запомнить результат

div — поделить предпоследнее запомненное число на последнее запомненное число нацело (без остатка), забыть оба эти числа и запомнить вместо них результат

mod — вычислить остаток от деления предпоследнего запомненного числа на последнее запомненное, забыть их и запомнить вместо них результат

print — ответить на вопрос «Сколько?»

Поскольку в некоторых случаях может произойти попытка выполнить деление на 0, то результатом будет NaN («Не число», Not a Number). Также NaN получится и при любой другой операции, если одним из операндов будет NaN, или же если операндов для выполнения операции не хватает.

 

Формат входного файла input.txt

Первая строка — целое число N (1 <= N <=100) — количество команд в имеющейся записи.

В каждой из следующих N строк размещена одна команда описанного выше вида. Число после команды push — всегда целое неотрицательное число, не превосходящее 10^8.  Гарантируется, что все числа, получаемые в процессе вычислений, находятся в диапазоне от 0 до 10^8. Также гарантируется, что среди команд не встречается команда push NaN.

Последняя команда (#N) во входном файле всегда print.

 

Формат выходного файла output.txt

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

 

Пример входного файла — 1

28

push 7

push 5

add

print

push 7

push 5

sub

print

push 7

push 5

mul

print

push 7

push 5

div

print

push 7

push 5

mod

print

add

print

add

print

add

print

add

print

 

Пример выходного файла — 1

12

2

35

1

2

3

38

40

52

 

Пример входного файла — 2

12

push 1

push 10

push 10

mul

mul

push 2

push 10

mul

add

push 1

add

print

 

Пример выходного файла — 2

121

 

Пример входного файла — 3

9

push 1

add

print

pop

print

push 1

push 0

div

print

 

Пример выходного файла — 3

NaN

NaN

NaN

 

 

 


Сдать задачу

Задать вопрос жюри по этой задаче