#3780. 题目1-区间异或查询-前缀异或和
题目1-区间异或查询-前缀异或和
【题目描述】
给定一个长度为 n 的整数数组,以及 q 个查询。每个查询给出两个整数 L 和 R,要求你求出数组中从下标 L 到下标 R(均采用 1-based 编号)的所有元素的异或和。
利用前缀异或数组可以将每个区间查询的时间复杂度降低到 O(1)。
【输入格式】
- 第一行包含两个正整数 n 和 q (1 ≤ n, q ≤ 10^5)。
- 第二行包含 n 个非负整数(各数不超过 10^9),表示数组的各个元素。
- 接下来 q 行,每行包含两个整数 L 和 R,表示一个查询区间。
【输出格式】
- 对于每个查询,输出一行,该行包含区间 [L, R] 上所有数的异或和。
【样例输入】
5 3
1 2 3 4 5
1 3
2 5
1 5
【样例输出】
0
0
1
【说明】
数组的前缀异或定义为:
pre[0] = 0
pre[i] = a[1] ^ a[2] ^ … ^ a[i]
对于查询 [L, R],答案为 pre[R] ^ pre[L-1]。