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;
}

  

寻找真正的热爱
原文地址:https://www.cnblogs.com/lesning/p/13734380.html