P6075 [JSOI2015]子集选取
luogu.com.cn/problem/P6075
https://www.cnblogs.com/wxq1229/p/12295145.html具体可以参考这里
说一下总结,计数时候要看看是不是有什么东西相互独立的,可以利用乘法原理。
一个人走n步时候(有k个方向,没有阻拦)可以去
上图 选自https://www.cnblogs.com/wxq1229/p/12295145.html
a*a的下三角矩阵中,有2^a种覆盖方法
每个数字2^k种类,那b个数字相互独立,就有2^ab 种类方法了
#include<iostream> using namespace std; typedef long long ll; ll mod = 1e9+7; ll k_q(ll a,ll b){ ll res = 1; while(b){ if(b&1){ res = (res*a)%mod; } b>>=1; a = (a*a)%mod; } return res; } int main(){ ll n,k; cin>>n>>k; ll ans = k_q(2,n)%mod; ans = k_q(ans,k)%mod; cout<<ans<<endl; return 0; }