第七天23号

题目来源:OpenJudge - 3340:RPN Calculator

翻译如下:

描述:
波兰数学家JanŁukasiewicz于1920年引入了一种前缀表示法,与相关波兰表示法类似,反向波兰表示法(或简称RPN)是一种数学表示法,其中每个运算符都跟随其所有操作数。它也被称为后缀符号。在反向波兰表示法中,运算符跟随其操作数;例如,加上3和4,1将写“34+”而不是“3+4”。如果有多个操作,则在第二个操作数之后立即给出运算符;所以这个表达写着“3− 在传统的中缀符号中,4+5“将写为”3 4− RPN中的5+:首先从3中减去4,然后再加上5。RPN的一个优点是它不需要中缀所需的括号。而“3− 4*5“也可以写”3− (4*5)”,这意味着与“(3− 4) *5“,只有括号可以消除这两种含义的歧义。在后缀中,前者将写为“3 4 5*−“,意思是“3(4 5*)−".您被要求设计一个简单的RPN计算器,它将支持“+”、“-”、“*”、“/”(除数的绝对值将不小于10^-9)和“^”(幂运算符,如果基数b<=0,则指数e必须是不大于10^9的正整数)运算符。您可以假设计算过程中的所有数字都可以放入双精度浮点数中。此外,我们的计算器还有一些内存。每次我们计算一个表达式时,内存中最小的数字将被删除,并用表达式的值替换它。
输入:
第一行包含一个整数n,它是我们计算器的内存大小。从第二行开始,我们将给出n个数字,这是内存的初始值。除最后一行外,每行将有10个数字。然后每一行都有一个有效的RPN表达式,我们前面描述过,以“=”结尾,这是计算的命令。每个术语不超过20个字符。
输出:
对于每个表达式,在一行中输出其值。然后输出一个空行来分隔这两部分。最后,按递增顺序输出内存中的所有数字,每行10个数字。每个数字的格式应采用科学记数法,小数点后6位,指数后2位,如C中printf()函数的“%e”格式字符串。一行中的数字应以空格分隔。

上一篇:第23讲 时序电路设计1


下一篇:《操作系统原理》 记录(23)