P2186 小Z的栈函数

    • 188通过
    • 786提交
  • 题目提供者 LittleZ
  • 评测方式 云端评测
  • 标签 模拟
  • 难度 提高+/省选-
  • 时空限制 1000ms / 128MB

题解

  • 提示:收藏到任务计划后,可在首页查看。
  • 最新讨论 显示

    推荐的相关题目 显示

    题目描述

    小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作:

    NUM X:栈顶放入X。

    POP:抛弃栈顶元素。

    INV:将栈顶元素取出,然后放入它的相反数。

    DUP:再放入一个和栈顶元素相同的数。

    SWP:交换栈顶的两个元素。

    ADD:取出栈顶的两个元素,两元素相加,所得结果放入栈内。

    SUB:取出栈顶的两个元素,第二个元素减去第一个元素,所得结果放入栈内。

    MUL:取出栈顶的两个元素,两元素相乘,所得结果放入栈内。

    DIV:取出栈顶的两个元素,第二个元素整除以第一个元素,所得结果放入栈内。

    MOD:取出栈顶的两个元素,第二个元素取模以第一个元素,所得结果放入栈内。

    END:结束这个程序。

    然后,小Z用上面的11种操作写了一个一元函数f(x)。x就是放入栈里面第一个初始元素。然后经过这个函数的一系列操作,当函数结束的时候,正常情况下,栈里面会有唯一的一个元素。剩下的这个元素就作为函数f(x)的返回值。

    小Z有N个询问,询问每个值x经过上述函数所映射出的f(x)是多少。但是这个由于机器太老了,跑起东西来太慢了,小Z又是一个急性子,所以请你们写一个程序,来帮助小Z计算他查询的f(x)。

    输入输出格式

    输入格式:

    输入若干行,仅包含上述11个操作,用来描述函数f(x)的操作,函数的结束保证以END结尾;

    接下来一个整数N;

    下面N行每行一个数字ai,代表栈里面的初始元素。

    输入数据不保证合法!!!

    输出格式:

    如果最后栈内不是一个元素,输出“ERROR”;

    还有,由于这台机器太破了,所以如果运算过程中有数字的绝对值大于1000000000机器也输出“ERROR”;

    如果输入数据不合法,导致中途退出,输出“ERROR”;

    否则输出对应的f(x)。

    输入输出样例

    输入样例#1: 复制
    NUM 600000000
    ADD
    END
    3
    0
    600000000
    1
    输出样例#1: 复制
    600000000
    ERROR
    600000001

    说明

    【提示】

    仔细考虑不合法的情况,避免不必要的RE和WA。

    【数据规模】

    函数操作步数<=2000

    询问数<=2000

    提示
    标程仅供做题后或实在无思路时参考。
    请自觉、自律地使用该功能并请对自己的学习负责。
    如果发现恶意抄袭标程,将按照I类违反进行处理。