zoukankan      html  css  js  c++  java
  • 【BZOJ4475】子集选取(JSOI2015)-组合数学

    测试地址:子集选取
    做法:本题需要用到组合数学。
    本题是一个结论题,接下来写一下数学推导。
    我们显然可以分开考虑每个元素,最后把方案数乘起来。对于一个元素,它在直角三角形中的存在是要满足一定限制条件的:考虑从直角三角形的左下角引出一条折线,可以向上或向右走,最后折线的左上方就是出现该元素的位置。那么折线的数目就是方案的数目,可以发现折线不管怎么走都是走k步,而每一步都可以选择向右或向上,所以总的方案数为2k。因此n个元素的情况的总方案数就是(2k)n=2nk,于是我们就解决了这一题。
    以下是本人代码:

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const ll mod=1000000007;
    ll n,k;
    
    ll power(ll a,ll b)
    {
        ll s=1ll,ss=a;
        while(b)
        {
            if (b&1) s=s*ss%mod;
            ss=ss*ss%mod;b>>=1;
        }
        return s;
    }
    
    int main()
    {
        scanf("%lld%lld",&n,&k);
        printf("%lld",power(2ll,n*k));
    
        return 0;
    }
  • 相关阅读:
    css3-文本新增属性
    css3新增的伪类和伪元素
    git小记
    css3笔记
    jQuery(三)
    jQuery笔记(二)
    <转>HTML、CSS、font-family:中文字体的英文名称
    jQuery笔记
    DOM父节点、子节点例子
    DOM之节点类型加例子
  • 原文地址:https://www.cnblogs.com/Maxwei-wzj/p/9793274.html
Copyright © 2011-2022 走看看