CF959F Mahmoud and Ehab and yet another xor task

题目描述

Ehab 有一个包含 $n$ 个整数的数组 $a$。他喜欢[按位异或操作](https://en.wikipedia.org/wiki/Bitwise_operation#XOR),也喜欢捉弄 Mahmoud,于是他想出了一个问题。他给了 Mahmoud $q$ 个询问。每个询问中,他会给 Mahmoud 两个整数 $l$ 和 $x$,并要求他找出数组前 $l$ 个元素中,有多少个子序列的按位异或和等于 $x$。你能帮助 Mahmoud 回答这些询问吗? 子序列可以包含不相邻的元素。

输入格式

第一行包含两个整数 $n$ 和 $q$,表示数组的元素个数和询问的个数,满足 $1 \leq n, q \leq 10^{5}$。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$,表示数组的元素,满足 $0 \leq a_i < 2^{20}$。 接下来的 $q$ 行,每行包含两个整数 $l$ 和 $x$,表示一个询问,满足 $1 \leq l \leq n$,$0 \leq x < 2^{20}$。

输出格式

对于每个询问,输出其答案对 $10^9+7$ 取模后的结果,每个答案占一行。

说明/提示

空集的按位异或和为 $0$,只包含一个元素的集合的按位异或和就是该元素本身。 由 ChatGPT 4.1 翻译