题目:点击此看题目
思路:一个数组有n个元素,每个元素能够划分为k位的二进制形式。可写成n*k的矩阵(n行k列)
要是所有元素和最大(尽可能少0)且每一列所有元素&起来为零,只需要使得每一列都至少有一个零,得到共有n的k次方种答案。
代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e9+7;
int main() {
int n, k;
int t; cin >> t;
while(t--) {
long long ans = 1;
cin >> n >> k;
for(int i = 1; i <= k; i++) {
ans *= n;
ans %= N;
}
cout << ans <<'\n';
}
return 0;
}