“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; }