#4514. 【模板】区间异或和

【模板】区间异或和

题目描述

给定一个长度为 nn 的数列 aa,有 qq 次询问。每次询问给定两个整数 l,rl, r,请求出 al⊕al+1⊕⋯⊕ara_l \oplus a_{l+1} \oplus \cdots \oplus a_r 的值,即第 ll 个数到第 rr 个数的按位异或和。

其中 ⊕\oplus 表示按位异或运算(C++ 中为 ^ 运算符)。

输入格式

第一行两个整数 n,qn, q,表示数列长度和询问次数。

第二行 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n。

接下来 qq 行,每行两个整数 l,rl, r,表示一次询问。保证 1≤l≤r≤n1 \le l \le r \le n。

输出格式

共 qq 行,第 ii 行输出第 ii 次询问的答案。

说明/提示

数据规模与约定

对于 100%100\% 的数据,保证 1≤n,q≤1051 \le n, q \le 10^5,0≤ai≤1090 \le a_i \le 10^9。

本题为本校训练自编题(参照经典题型)。