题解
#include<bits/stdc++.h>
#define io ios::sync_with_stdio(false);
#define off cin.tie(0), cout.tie(0);
#define all(x) x.begin(),x.end()
#define inf 0x3f3f3f3f3f3f3f3f
#define int long long
using namespace std;
const int mod = 1e9 + 7;
const double eps = 1e-7;
int t = 1, n, m, x, k;
int dp[200020][70], a[200010];
int count(int num) {
int cnt = 0;
while (num) {
if (num & 1) cnt++;
num >>= 1;
}
return cnt;
}
void run() {
cin >> n >> k;
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= 63; j++) {
dp[i][j] = 0;
}
}
for (int i = 1; i <= n; i++) {
cin >> a[i];
dp[i][a[i]] = (dp[i][a[i]] + 1) % mod; // 只取第i个值
for (int j = 0; j <= 63; j++) {
dp[i][j] = (dp[i][j] + dp[i - 1][j]) % mod; // 不取第i个值
dp[i][j & a[i]] = (dp[i][j & a[i]] + dp[i - 1][j]) % mod; // 取第i个值
}
}
int ans = 0;
for (int i = 0; i <= 63; i++) {
if (count(i) == k) {
ans = (ans + dp[n][i]) % mod;
}
}
cout << ans << '\n';
}
signed main () {
io off
cin >> t;
while (t--) {
run();
}
}