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 翻译