题目:
从2的k-1次方到0之间选取n个数,使这n个数&为0且和要尽可能大。
题解:
n个数化成二进制让每个数的其中一位变成0,即可使&为0,且和尽可能大,
所以答案是n的k次方。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
ll m; cin >> m; while (m--) { //n^k
ll n, k;
cin >> n >> k;
ll ans = 1;
for (ll i = 0; i < k; i++) {
ans *= n;
ans %= mod;
}
cout << ans << endl;
}
return 0;
}