2 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=155; int n, sum, d[N]; long long C[N][N]; int main() { int n;scanf("%d", &n); int sum=0; for(int i=1;i<=n;i++) { scanf("%d", &d[i]); sum += d[i]-1; if(d[i]==0 && n>1) return printf("0\n"), 0; } if(n==1) return printf("%d\n", !d[1]), 0; if(sum!=(n-2)) return printf("0\n"), 0; for(int i=0;i<=n-2;i++)C[i][0] = 1; for(int i=1;i<=n-2;i++)for(int j=1;j<=i;j++) C[i][j] = C[i-1][j-1] + C[i-1][j]; long long ans=1; for(int i=1;i<=n;i++)ans = ans * C[sum][d[i]-1], sum -= (d[i]-1); printf("%lld\n", ans); return 0; } -
0
#include<bits/stdc++.h> using namespace std; const int N=155; int n,sum,d[N]; long long C[N][N]; int main() { int n;scanf("%d", &n); int sum=0; for(int i=1;i<=n;i++) { scanf("%d",&d[i]),sum+=d[i]-1; if(d[i]==0 && n>1) return printf("0\n"), 0; } if(n==1) return printf("%d\n",!d[1]),0; if(sum!=(n-2)) return printf("0\n"), 0; for(int i=0;i<=n-2;i++)C[i][0] = 1; for(int i=1;i<=n-2;i++)for(int j=1;j<=i;j++) C[i][j]=C[i-1][j-1]+C[i-1][j]; long long ans=1; for(int i=1;i<=n;i++)ans= ans*C[sum][d[i]-1],sum-=(d[i]-1); printf("%lld\n", ans); return 0; }
- 1
信息
- ID
- 2864
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 8
- 标签
- 递交数
- 18
- 已通过
- 7
- 上传者