“bitwise AND”即“按位与”运算,属于二进制运算的一种,意为数学中的且运算,所以明显这道题得从二进制数思维来做。题意即为在每个数组元素化为二进制数后存在0,而又要使和最大,所以每个数只有一个0即可,答案就是n^k。(记得取模)

#include<bits/stdc++.h>
using namespace std;
int m=1e9+7;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        long long int n,k,sum=1;
        cin>>n>>k;
        while(k--)
        {
            sum*=n;
            sum%=m;
        }
        cout<<sum<<endl;
    }
    return 0;
}