1 条题解

  • 1
    @ 2022-8-31 9:20:55
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    const int maxn=155;
    int c[maxn][maxn];
    int ans,d[maxn];
    int sum;
    int n;
    
    inline void pre(){
    	for(int i=0;i<=n;i++){
    		c[i][0]=1;
    		for(int j=1;j<=i;j++)
    			c[i][j]=c[i-1][j]+c[i-1][j-1];
    	}
    }
    
    int main(){
    	cin>>n;
    	if(n==1){
    		cin>>d[1];
    		if(d[1]==0) cout<<1<<endl;
    		else cout<<0<<endl;
    		return 0;
    	}
    	pre();
    	for(int i=1;i<=n;i++){
    		cin>>d[i];
    		if(!d[i]) return cout<<0<<endl,0;
    		d[i]--;
    		sum+=d[i];
    	}
    	if(sum!=n-2) return cout<<0<<endl,0;
    	sum=0,ans=1;
    	for(int i=1;i<=n;i++)
    		ans*=c[n-2-sum][d[i]],sum+=d[i];
    	cout<<ans<<endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    1242
    时间
    1000ms
    内存
    512MiB
    难度
    5
    标签
    递交数
    12
    已通过
    5
    上传者