2 条题解

  • 1
    @ 2022-8-31 9:21:02
    #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;
    }
    
    • 0
      @ 2023-7-27 9:06:08

      B2127:提示:10000以内的完全数有6,28,496, 8128

      • 1

      信息

      ID
      1211
      时间
      1000ms
      内存
      256MiB
      难度
      5
      标签
      (无)
      递交数
      44
      已通过
      18
      上传者