数组元素要小于等于2^{k}-1,大于等于0。数组内的每个元素都可以由长度为k的二进制数表示,数组元素总和要最大,那么每一列需要且仅需要一个0。
#include<iostream> #include<algorithm> #include<math.h> using namespace std; const int b= 1e9+7; int main() { long long n,t,k; cin>>t; while(t--){ cin>>n>>k; long long a=1; while(k){ if(k&1){ a=(a*n)%(b); } n=(n*n)%(b); k>>=1; } cout<<a<<endl; } return 0; }