TouchStone
  请登录后使用
登录 注册
 系统首页  练习题库  考试列表  判题结果  问题讨论与解答  统计信息与排名
  • 首页
  • 题库
  • P3271
  • 题目
  • P3271可持久化栈
    限制 : 时间限制 : 10000 MS   空间限制 : 32768 KB
    问题描述

    一开始有个空栈,三种操作:
    1.把整数x加到栈顶。
    2.把栈顶的数弹出来,输出弹出的元素。如果栈空就无视。
    3.回到第k次操作后的状态。
    4.查询栈顶元素,输出栈顶元素。如果栈空就无视。
    强制在线,设当前是第op种操作,是第M次操作,上次答案是lastans,一开始lastans=0,加密规则:
    1.输入opp,xx,则op=(opp+lastans-1)%4+1,x=xx^lastans。
    2.输入opp,tt,则op=(opp+lastans-1)%4+1,tt是一个没用的数。
    3.输入opp,kk,则op=(opp+lastans-1)%4+1,k=(kk+lastans)%M。
    4.输入opp,tt,则op=(opp+lastans-1)%4+1,tt是一个没用的数。

    输入格式

    第一行一个整数m,表示操作数。
    接下来m行每行一个操作。

    输出格式

    对于操作2和操作4输出答案。

    样例输入

    8
    1 1
    4 4
    3 5
    1 2
    3 2
    4 3
    1 6
    2 5

    样例输出

    1
    1
    6

    提示

    m<=2000000。
    0<=栈里面的元素<=229-1。
    所有输入的数都是非负整数。


    来源  感谢nodgd