P6075 [JSOI2015]子集选取
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;
}
     寻找真正的热爱

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号