func_code_string: #include <bits/stdc++.h>   long double eps = 1e-8;   int main() {     int n, k;     std::cin >> n >> k;     std::vector<long double> probabilities(n);     for (long double& probability : probabilities) {       std::cin >> probability;     }     long long max_size = (1 << n);     std::vector<std::vector<long double>> dp(n,                                              std::vector<long double>(max_size));     std::vector<long double> result(n, 0.0);     for (int i = 0; i < n; ++i) {       dp[i][0] = probabilities[i];       result[i] += dp[i][0];     }     for (int mask = 1; mask < max_size; ++mask) {       long double mask_probability = 0;       if (__builtin_popcount(mask) >= k) {         continue;       }       for (int i = 0; i < n; ++i) {         if (mask & (1 << i)) {           mask_probability += probabilities[i];         }       }       for (int k = 0; k < n; ++k) {         if (mask & (1 << k)) {           continue;         }         long double sum = 0;         for (int j = 0; j < n; ++j) {           if (!(mask & (1 << j))) {             continue;           }           sum += dp[j][mask - (1 << j)];         }         if (mask_probability > 1.0 - eps) {           sum = 0;         } else {           sum *= probabilities[k] / (1 - mask_probability);         }         dp[k][mask] = sum;         result[k] += dp[k][mask];       }     }     std::cout.precision(20);     std::cout << std::fixed;     for (int i = 0; i < n; ++i) {       std::cout << result[i] <<    ;     }     std::cout << std::endl;     return 0;   }   