func_code_string: #include <bits/stdc++.h>   using namespace std;   long long const MAXN = 5e1 + 8;   long long const INF = 3e3 + 8;   long long const delta = 1000000007;   long long a[MAXN];   long long dp[MAXN][MAXN][INF];   double calc(long long t, long long n, long long b) {     double ans = t;     for (long long i = b + 1; i <= n; i++) ans /= (double)i;     for (long long i = 1; i <= n - b; i++) ans *= (double)i;     return ans;   }   int main() {     std::ios::sync_with_stdio(0);     ;     cin.tie(0);     cout.tie(0);     long long n;     cin >> n;     for (long long i = 1; i <= n; i++) cin >> a[i];     long long p;     cin >> p;     cout.precision(10);     cout << fixed;     double ans = 0;     dp[0][0][0] = 1;     for (long long i = 1; i <= n; i++) {       for (long long j = 0; j <= n; j++) {         for (long long k = 0; k < INF; k++) {           dp[i][j][k] = dp[i - 1][j][k];           if (j && k >= a[i]) dp[i][j][k] += dp[i - 1][j - 1][k - a[i]];         }       }     }     for (long long i = 1; i <= p; i++) {       for (long long j = 1; j <= n; j++) ans += calc(dp[n][j][i], n, j);     }     cout << ans;     return 0;   }   