AND 0, Sum Big CodeForces - 1514B
题意:
构造一个含n个k位二进制数的序列,使得序列中所有数按位与的结果为0,且序列和最大,求构造方案数。
题解:
对于n个数的每一位,都至少有个0,这样可以保证最后的按位与结果为0。题目还要求序列和最大,故每一位上都恰好只有一个0,因为这是一个k位的二进制,对于每一位上的0都有n个选择,所以答案是nk
代码:
#include<bits/stdc++.h>
#define debug(a,b) printf("%s = %d\n",a,b);
typedef long long ll;
using namespace std;inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
const ll mod=1e9+7;
ll poww(ll a,ll b){ll ans=1;while(b){if(b&1)ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return ans%mod;
}
int main()
{int t;//cout<<poww(2,3);cin>>t;while(t--){ll n,k;cin>>n>>k;cout<<poww(n,k)%mod<<endl;}
}