#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]。