• codeforces553A


    sol:很显然的组合数,就是把当前的ai个塞进前面里去

    模数是质数也很行

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    typedef int ll;
    inline ll read()
    {
        ll s=0; bool f=0; char ch=' ';
        while(!isdigit(ch)) {f|=(ch=='-'); ch=getchar();}
        while(isdigit(ch)) {s=(s<<3)+(s<<1)+(ch^48); ch=getchar();}
        return (f)?(-s):(s);
    }
    #define R(x) x=read()
    inline void write(ll x)
    {
        if(x<0) {putchar('-'); x=-x;}
        if(x<10) {putchar(x+'0'); return;}
        write(x/10); putchar((x%10)+'0');
    }
    #define W(x) write(x),putchar(' ')
    #define Wl(x) write(x),putchar('
    ')
    const int Mod=1000000007,N=10005;
    int n,a[N],b[N],dp[N],jc[N];
    inline int ksm(int x,int y)
    {
        int s=1,bas=x;
        while(y)
        {
            if(y&1) s=s*bas%Mod;
            bas=bas*bas%Mod;
            y>>=1;
        }
        return s;
    }
    inline int C(int n,int m)
    {
        return jc[n]*ksm(jc[m],Mod-2)%Mod*ksm(jc[n-m],Mod-2)%Mod;
    }
    signed main()
    {
    //    freopen("codeforces.in","r",stdin);
        int i,j,k;
        R(n); b[0]=0;
        for(i=1;i<=n;i++)
        {
            R(a[i]);
            b[i]=b[i-1]+a[i];
        }
        dp[1]=1;
        jc[0]=jc[1]=1;
        for(i=2;i<=b[n];i++) jc[i]=jc[i-1]*i%Mod;
        for(i=2;i<=n;i++)
        {
            dp[i]=dp[i-1]*C(b[i]-1,a[i]-1)%Mod;
        }
        Wl(dp[n]);
        return 0;
    }
    View Code
    河田は河田、赤木は赤木……。 私は誰ですか。教えてください、私は誰ですか。 そうだ、俺はあきらめない男、三井寿だ!
  • 相关阅读:
    10_14 drf接口框架。
    10_11 vue路由跳转
    10_10,vue项目环境搭建
    10_9vue循环指令与组件
    10_8 vue的导入
    9_25中间键与登录认证
    块级元素居中问题
    2019牛客多校第五场 F maximum clique 1 状压dp+最大独立集
    2019牛客多校第五场C generator 2 hash,bsgs模板
    2019牛客多校第五场B generator 十进制快速幂
  • 原文地址:https://www.cnblogs.com/gaojunonly1/p/15436925.html
Copyright © 2020-2023  润新知