func_code_string: #include <bits/stdc++.h>   using namespace std;   int N, a[55], P;   double dp[55][55][55];   double fac(int n) {     double ans = 1;     for (int i = 0; i < (n); i++) ans *= (i + 1);     return ans;   }   int main(int argc, char *argv[]) {     scanf( %d , &N);     for (int i = 0; i < (N); i++) scanf( %d , a + i);     scanf( %d , &P);     dp[0][0][0] = 1;     for (int i = 0; i < (N); i++)       for (int in = (0); in <= (N); in++)         for (int p = (0); p <= (P); p++)           if (dp[i][in][p]) {             dp[i + 1][in][p] += dp[i][in][p];             if (p + a[i] <= P) dp[i + 1][in + 1][p + a[i]] += dp[i][in][p];           }     double tmp = 0, ans = 0, sum;     for (int in = (N); in >= (0); in--) {       sum = 0;       for (int p = (0); p <= (P); p++) sum += dp[N][in][p];       sum *= fac(in) * fac(N - in);       ans += in * (sum - tmp);       tmp = sum;     }     printf( %.9lf n , ans / fac(N));     return 0;   }   