func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 105;   int n;   int a[maxn];   int p;   double dp[maxn][maxn];   double release(int x) {     double res = 1;     for (register double i = x + 1; i <= n; i++) {       res *= (i - x);       res /= i;     }     return res;   }   signed main() {     scanf( %d , &n);     for (register int i = 1; i <= n; i++) {       scanf( %d , &a[i]);     }     scanf( %d , &p);     dp[0][0] = 1;     for (register int i = 1; i <= n; i++) {       for (register int j = n - 1; j >= 0; j--) {         for (register int k = p - a[i]; k >= 0; k--) {           dp[j + 1][k + a[i]] += dp[j][k];         }       }     }     double ans = 0;     for (register int i = 1; i <= n; i++) {       for (register int j = 0; j <= p; j++) {         if (dp[i][j]) {           ans += dp[i][j] * release(i);         }       }     }     printf( %.10lf n , ans);     return 0;   }   