• [LOJ6671] EntropyIncreaser 与 Minecraft


    Description

    求满足 (sum_{i=1}^n |x_i| le p)((x_1,x_2,...,x_n)) 数目。(n le 10^6)

    Solution

    枚举 (x_k e 0) 的数目 (i),则有

    [sum_{i=0}^n inom n i inom {p-1} {i-1} 2^i =sum_{i=0}^n inom n i 2^i sum_{j=i}^p inom {j-1}{ i-1}=sum_{i=0}^n 2^i inom n iinom p i ]

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long 
    const int N = 1000005;
    const int mod = 1e9+7;
    const int dbg = 1;
    
    int frac[N];
    
    int qpow(int p,int q)
    {
        return (q&1?p:1)*(q?qpow(p*p%mod,q/2):1)%mod;
    }
    
    int inv(int p)
    {
        return qpow(p,mod-2);
    }
    
    int binom(int n,int m)
    {
        if(n<m) return 0;
        return frac[n]*inv(frac[m])%mod*inv(frac[n-m])%mod;
    }
    
    signed main()
    {
        ios::sync_with_stdio(false);
    
        int n,p;
        cin>>n>>p;
    
        frac[0]=1;
        for(int i=1;i<=max(n,p);i++)
        {
            frac[i]=frac[i-1]*i%mod;
        }
    
        int ans=0;
    
        for(int i=0;i<=n;i++)
        {
            ans+=qpow(2,i)*binom(n,i)%mod*binom(p,i)%mod;
            ans%=mod;
        }
    
        cout<<ans<<endl;
        if(dbg) system("pause");
    }
    
  • 相关阅读:
    U132973 双生独白
    Remmarguts' Date(A* 短路)
    P3908 数列之异或
    P1469 找筷子
    P1759 通天之潜水
    P2356 弹珠游戏
    P7072 直播获奖
    P7074 方格取数
    CSP2020二轮游记
    P6205 [USACO06JAN]Dollar Dayz S
  • 原文地址:https://www.cnblogs.com/mollnn/p/13692908.html
Copyright © 2020-2023  润新知