func_code_string: #include <bits/stdc++.h>   using namespace std;   int a[51];   long long c[51][51];   double dp[51][51][51];   bool state[51][51][51];   double cal(int stu, int room, int mval) {     if (state[stu][room][mval]) return dp[stu][room][mval];     state[stu][room][mval] = true;     double &ret = dp[stu][room][mval];     if (!stu) return ret = mval;     if (!room) return ret = 0.0;     for (int i = 0; i <= stu; i++) {       int rval = i / a[room] + (i % a[room] != 0);       ret += 1.0 * c[i][stu] * pow(1.0 / room, i) *              pow(1.0 - 1.0 / room, stu - i) *              cal(stu - i, room - 1, max(mval, rval));     }     return ret;   }   int main() {     int n, m, i;     for (i = 1; i <= 50; i++) c[0][i] = c[i][i] = 1;     for (i = 2; i <= 50; i++)       for (n = 1; n < i; n++) c[n][i] = c[n - 1][i - 1] + c[n][i - 1];     scanf( %d %d , &n, &m);     for (i = 1; i <= m; i++) scanf( %d , a + i);     printf( %.20lf , cal(n, m, 0));     return 0;   }   