#P0003. [2023合肥市小学组] 逆波兰式计算(rpn)

[2023合肥市小学组] 逆波兰式计算(rpn)

题目描述

逆波兰表达式又叫做后缀表达式,是波兰逻辑学家 J.卢卡西维兹于 1929 年 首先提出的一种表达式的表示方法,它把运算数写在前面,把运算符写在后面, 逆波兰式中只有运算符和运算数。如 a+ba+b 的逆波兰式为 ab+ab+a+bca+b−c 的逆波兰式为 ab+cab+c−a+(bc)a+(b–c) 的逆波兰式为 abc−+。现在小可可有一个已知的逆波兰式,请帮他计算这个逆波兰式的值吧。一种计算逆波兰式值的方法是从左向右扫描逆波兰式,遇到运算符就计算,为简化计算,假设这个逆波兰式中只有 +、- 两种运算符。

输入格式

22 行。第一行 11 一个正整数 nn,表示逆波兰式中数值的个数(包括运算 符和运算数),第二行为逆波兰式,其中每个数值 p 由空格分隔。保证每个逆波兰式都是正确可计算的。

输出格式

111 1 个整数,表示逆波兰式的值。

样例

输入数据#1

5
10 100 + 13 –

输出数据#1

97

解释#1

从左向右扫描,遇到 +,则向前(左)取两个数 1010100100,进行加法运算,10+100=11010+100=110,继续向右扫描,遇到 -,则向前(左)取两个数 1101101313,进行减法运算,11013=97 110−13=97

输入数据#2

5
10 20 13 - +

输出数据#2

17

解释#2

从左向右扫描,遇到 -,则向前(左)取两个数 20201313,进行减法运算, 2013=720−13=7,继续向右扫描,遇到 +,则向前(左)取两个数 101077,进行加法运算, 10+7=1710+7=17

数据范围

1n1001≤n≤100pp为 +、 - 或 1p1001≤p≤100 的整数。