数组元素要小于等于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;
}


京公网安备 11010502036488号