P5670 秘籍-反复异或
题目描述
给定一个长为 $n$ 的序列,支持操作:
- `1 l r x`:将区间 $[l,r]$ 的所有元素加 $x$。
- `2 l r` :查询区间 $[l,r]$ 中所有元素异或和的后 $m$ 个二进制位的值。
输入格式
第一行三个正整数 $n,m,q$,表示序列长度,位数,操作数。
第二行 $n$ 个非负整数,表示原始序列 $a_i$。
接下来 $q$ 行,每行若干个非负整数表示一个操作。
输出格式
对于每个 $2$ 操作输出一行,一个非负整数表示答案。
说明/提示
【数据范围】
本题共 $10$ 个测试点。
对于测试点 $1 \sim 3$,$1\le n,q \le 1000$;
对于测试点 $4,5$,$1 \le m \le 5$;
对于测试点 $6 \sim 10$,设 $k$ 为测试点编号,有 $m=k$。
对于 $100\%$ 的数据,$1 \le n,q \le 10^5$,$1\le m \le 10$,$0\le a_i,x < 2^m$。
**请注意常数优化。**