题单练习 挑战赛 普及+/提高 题
← 上一题 下一题 →

A3120 | 宏量运算

时间限制2s
内存限制256MB
通过 / 提交0/0

题目描述

时间限制:2000ms

内存限制:256MB


给定一个变量 $X$ 和 $N$ 个改变 $X$ 值的操作。
操作 $i$ 使用一对整数 $(T_i,A_i)$ 表示,并执行以下操作:

  • 如果 $T_i=1$,将 $X$ 的值更改为 $X\ {\rm and}\ A_i$;
  • 如果 $T_i=2$,将 $X$ 的值更改为 $X\ {\rm or}\ A_i$;
  • 如果 $T_i=3$,将 $X$ 的值更改为 $X\ {\rm xor}\ A_i$。

  • 将 $X$ 的值初始化为 $C$,并按以下顺序执行程序:
  • 执行操作 $1$,然后输出 $X$ 的结果值。
  • 接下来,按顺序执行操作 $1, 2$,然后输出 $X$ 的值。
  • 接下来,按顺序执行操作 $1, 2, 3$,然后输出 $X$ 的值。
  • $\vdots$
  • 接下来,按顺序执行操作 $1, 2, \ldots, N$,然后输出 $X$ 的值。

  • 什么是 ${\rm and},\ {\rm or},\ {\rm xor}$ ?

    >对于非负整数 $A$ 和 $B$ 的 ${\rm and},\ {\rm or},\ {\rm xor}$ 运算定义如下:

    >- 当 $A\ {\rm and}\ B$ 用二进制表示时,如果 $A$ 和 $B$ 在 $2^k$ 位($k \geq 0$)的数字都是 $1$,则 $2^k$ 位的数字为 $1$,否则为 $0$。

    - 当 $A\ {\rm or}\ B$ 用二进制表示时,如果 $A$ 和 $B$ 在 $2^k$ 位($k \geq 0$)至少有一个数字为 $1$,则 $2^k$ 位的数字为 $1$,否则为 $0$。

    - 当 $A\ {\rm xor}\ B$ 用二进制表示时,如果 $A$ 和 $B$ 在 $2^k$ 位($k \geq 0$)恰有一个数字为 $1$,则 $2^k$ 位的数字为 $1$,否则为 $0$。

    >例如,$3\ {\rm and}\ 5 = 1$,$3\ {\rm or}\ 5 = 7$,$3\ {\rm xor}\ 5 = 6$。



    $\large{数据范围}$
  • $1 \leq N \leq 2\times 10^5$
  • $1\leq T_i \leq 3$
  • $0\leq A_i \lt 2^{30}$
  • $0\leq C \lt 2^{30}$
  • 所有输入数值均为整数。

输入格式

对于每个测试文件格式为:

$\tt{N\ C}$

$\tt{T_1\ A_1}$
$\tt{T_2\ A_2}$
$\tt{\vdots}$
$\tt{T_N\ A_N}$

输出格式

按照题目描述输出 $N$ 行,每行对应一个操作后的结果。

输入输出样例

输入 #1
3 10
3 3
2 5
1 12
输出 #1
9
15
12
输入 #2
9 12
1 1
2 2
3 3
1 4
2 5
3 6
1 7
2 8
3 9
输出 #2
0
2
1
0
5
3
3
11
2
C++ 编辑器
输入
输出