A27805.宏量运算
普及+/提高
通过率:0%
时间限制:2.00s
内存限制:256MB
题目描述
时间限制:2000ms
内存限制:256MB
给定一个变量 X 和 N 个改变 X 值的操作。
操作 i 使用一对整数 (Ti,Ai) 表示,并执行以下操作:
- 如果 Ti=1,将 X 的值更改为 X and Ai;
- 如果 Ti=2,将 X 的值更改为 X or Ai;
- 如果 Ti=3,将 X 的值更改为 X xor Ai。
将 X 的值初始化为 C,并按以下顺序执行程序:
- 执行操作 1,然后输出 X 的结果值。
- 接下来,按顺序执行操作 1,2,然后输出 X 的值。
- 接下来,按顺序执行操作 1,2,3,然后输出 X 的值。
- ⋮
- 接下来,按顺序执行操作 1,2,…,N,然后输出 X 的值。
什么是 and, or, xor ?
对于非负整数 A 和 B 的 and, or, xor 运算定义如下:
- 当 A and B 用二进制表示时,如果 A 和 B 在 2k 位(k≥0)的数字都是 1,则 2k 位的数字为 1,否则为 0。
- 当 A or B 用二进制表示时,如果 A 和 B 在 2k 位(k≥0)至少有一个数字为 1,则 2k 位的数字为 1,否则为 0。
- 当 A xor B 用二进制表示时,如果 A 和 B 在 2k 位(k≥0)恰有一个数字为 1,则 2k 位的数字为 1,否则为 0。
例如,3 and 5=1,3 or 5=7,3 xor 5=6。
数据范围
- 1≤N≤2×105
- 1≤Ti≤3
- 0≤Ai<230
- 0≤C<230
- 所有输入数值均为整数。
输入格式
对于每个测试文件格式为:
N C
T1 A1
T2 A2
⋮
TN AN
输出格式
按照题目描述输出 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
说明/提示
样例 1:
X 的初始值是 10 。
- 操作 1 将 X 变为 9 。
- 接着,操作 1 将 X 变为 10 ,然后操作 2 将其变为 15 。
- 接下来,操作 1 将 X 改为 12 ,然后操作 2 将其改为 13 ,接着操作 3 将其改为 12。