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{T_1\ A_1}$
$\tt{T_2\ A_2}$
$\tt{\vdots}$
$\tt{T_N\ A_N}$
$\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
样例 $1$:
$X$ 的初始值是 $10$ 。
- 操作 $1$ 将 $X$ 变为 $9$ 。
- 接着,操作 $1$ 将 $X$ 变为 $10$ ,然后操作 $2$ 将其变为 $15$ 。
- 接下来,操作 $1$ 将 $X$ 改为 $12$ ,然后操作 $2$ 将其改为 $13$ ,接着操作 $3$ 将其改为 $12$。
$X$ 的初始值是 $10$ 。
- 操作 $1$ 将 $X$ 变为 $9$ 。
- 接着,操作 $1$ 将 $X$ 变为 $10$ ,然后操作 $2$ 将其变为 $15$ 。
- 接下来,操作 $1$ 将 $X$ 改为 $12$ ,然后操作 $2$ 将其改为 $13$ ,接着操作 $3$ 将其改为 $12$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?