给定一个由n个正整数组成的数组a,计算非空子序列的数量,使得子序列中所有元素的按位与运算的结果在其二进制表示中正好有k个1。答案可能很大,所以以109+7为模输出。
注意,数组a的子序列是可以通过移除一些(可能为零个)元素从a获得的序列。例如,[1,2,3],[3],[1,3]是[1,2,3]的子序列,但[3,2]和[4,5,6]不是。给定一个由n个正整数组成的数组a,计算非空子序列的数量,使得子序列中所有元素的按位与运算的结果在其二进制表示中正好有k个1。答案可能很大,所以以109+7为模输出。
注意,数组a的子序列是可以通过移除一些(可能为零个)元素从a获得的序列。例如,[1,2,3],[3],[1,3]是[1,2,3]的子序列,但[3,2]和[4,5,6]不是。每个测试包含多个测试用例。第一行包含测试用例的数量t(1≤t≤10^4)。测试用例的描述如下。
每个测试用例的第一行由两个整数n和k(1≤n≤2∙10^5,0≤k≤6)组成——数组的大小和对计数的子序列进行逐位与运算的二进制表示中应包含的1的个数。
每个测试用例的第二行由n个整数ai(0≤ai≤63)组成——数组a。
对于50%的数据,t≤6,n≤20
对于100%的数据,1≤n≤2∙10^5,t*n≤10^6
对于每个测试用例,输出一个整数——在按位AND值的二进制表示中正好有k个1的子序列的数量。答案可能很大,所以以10^9+7为模输出。
6 5 1 1 1 1 1 1 4 0 0 1 2 3 5 1 5 5 7 4 2 1 2 3 12 0 0 2 0 2 0 2 0 2 0 2 0 2 10 6 63 0 63 5 5 63 63 4 12 13
31 10 10 1 4032 15