#P426. 异或延展

异或延展

题目描述

给定一个长度为 kk 的数列 x1,x2,,xkx_1,x_2,\cdots,x_k 作为一个起始值,然后从第 k+1k+1 项开始,无限地延展这个序列,延展后数列 xix_i 的定义如下:

$$x_i = x_{i-1} \oplus x_{i-2} \oplus \cdots \oplus x_{i-k} $$

这其中 \oplus 是将两个数字二进制编码后进行异或操作的意思。

给定 qq 个询问,每个询问都带有一组参数 l,rl,r,请计算并输出

xlxl+1xrx_{l} \oplus x_{l+1} \oplus \cdots \oplus x_{r}

的值。

输入格式

第一行:单个整数表示 kk; 第二行:kk 个整数表示 x1,x2,,xkx_1,x_2,\cdots,x_k; 第三行:单个整数表示 qq; 第四行到第 q+3q+3 行:每行两个整数 lil_irir_i,表示对一个区间的询问。

输出格式

qq 行:对每个询问,输出一个整数表示答案。

4
1 3 5 7
3
2 2
2 5
1 5
3
1
0
5
3 3 4 3 2
4
1 2
1 3
5 6
7 9
0
4
7
4

数据范围

  • 0xi1090\leq x_i\leq 10^9
  • 记查询参数 lil_irir_i 的最大值为 nn
  • 对于 30%30\% 的分数,k100k\leq 100n1000n\leq 1000q1000q\leq 1000
  • 对于 60%60\% 的分数,n105n\leq 10^5
  • 对于 100%100\% 的分数,k105k \leq 10^5n109n\leq 10^9q105q\leq 10^5