#P11896. 逆波兰表达式

逆波兰表达式

题目描述

逆波兰表达式(后缀表达式)是波兰逻辑学家 J. 卢卡西维兹于 1929 年提出的一种表达式表示方法。

  • 在逆波兰表达式中,运算数写在前面,运算符写在后面
  • 例如:
    • a + b 的逆波兰式为 a b +
    • a + b - c 的逆波兰式为 a b + c -
    • a + (b - c) 的逆波兰式为 a b c - +

现在,小可可有一个已知的逆波兰式,请你计算该表达式的值。

  • 计算方法:从左向右扫描逆波兰式,遇到运算符就进行运算
  • 假设逆波兰式中只有 +- 两种运算符

输入格式

共 2 行:

  • 第一行:正整数 n,表示逆波兰式中元素的个数(包括运算符和运算数)
  • 第二行:逆波兰式,每个元素 p 由空格分隔。p 为运算符 +- 或 1 ≤ p ≤ 100 的整数

保证每个逆波兰式都是正确可计算的。

输出格式

共 1 行,一个整数,表示逆波兰式的计算结果。

输入样例 #1

5  
10 100 + 13 -

输出样例 #1

97

输入样例 #2

5  
10 20 13 - +

输出样例 #2

17

题目说明

  • 数据范围:1 ≤ n ≤ 100
  • p 为 +- 或 1 ≤ p ≤ 100 的整数

样例解析

样例1:从左向右扫描,遇到 +,取前两个数 10 和 100,相加得到 110;继续扫描,遇到 -,取前两个数 110 和 13,相减得到 97。

样例2:从左向右扫描,遇到 -,取前两个数 20 和 13,相减得到 7;继续扫描,遇到 +,取前两个数 10 和 7,相加得到 17。