#CF2071D2. D2. 无限序列(困难版本)
D2. 无限序列(困难版本)
D2. 无限序列(困难版本)
每个测试的时间限制: 秒
每个测试的内存限制: MB
这是该问题的困难版本。与简单版本的区别在于,在此版本中 。只有解决了所有版本的题目,你才能进行 Hack。
给定一个正整数 以及一个无限二进制序列 的前 项。该序列定义如下:
对于 ,
$$a_m = a_1 \oplus a_2 \oplus \dots \oplus a_{\lfloor \frac{m}{2} \rfloor} $$其中 表示按位异或运算。
你的任务是计算给定区间 内元素的和:
输入格式
每个测试包含多个测试用例。
第一行包含测试用例的数量 ()。
每个测试用例的描述如下:
- 第一行包含三个整数 (,)。
- 第二行包含 个整数 ()—— 序列 的前 项。
保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一个整数 —— 给定区间内元素的和。
示例
输入
9
1 1 1
1
2 3 10
1 0
3 5 25
1 1 1
1 234 567
0
5 1111 10000000000
1 0 1 0 1
1 1000000000000000000 1000000000000000000
1
10 41 87
0 1 1 1 1 1 1 1 0 0
12 65 69
1 0 0 0 0 1 0 1 0 1 1 0
13 46 54
0 1 0 1 1 1 1 1 1 0 1 1 1
输出
1
5
14
0
6666665925
0
32
3
2
说明
-
在第一个测试用例中,序列 为
,,。
区间 的元素和为 。 -
在第二个测试用例中,序列 为
,,。
区间 的元素和为
$a_3 + a_4 + \dots + a_{10} = 1 + 1 + 1 + 0 + 0 + 1 + 1 + 0 = 5$。