func_code_string: #include <bits/stdc++.h>   using namespace std;   int v[55];   double dp[55][55][55];   int main() {     int n, p, sum = 0;     scanf( %d , &n);     for (int i = 1; i <= n; i++) {       scanf( %d , &v[i]);       sum += v[i];     }     scanf( %d , &p);     if (sum <= p) {       printf( %d n , n);       return 0;     }     double ans = 0;     for (int i = 1; i <= n; i++) {       memset(dp, 0, sizeof dp);       dp[0][0][0] = 1;       swap(v[i], v[n]);       for (int j = 1; j < n; j++) {         for (int cnt = 0; cnt < j; cnt++) {           for (int k = 0; k <= p; k++) {             if (k + v[j] <= p)               dp[j][cnt + 1][k + v[j]] += dp[j - 1][cnt][k] * (cnt + 1) / j;             dp[j][cnt][k] += dp[j - 1][cnt][k] * (j - cnt) / j;           }         }       }       for (int cnt = 0; cnt < n; cnt++) {         for (int k = 0; k + v[n] <= p; k++) {           ans += dp[n - 1][cnt][k] / n;         }       }       swap(v[i], v[n]);     }     printf( %.15lf n , ans);     return 0;   }   