Pagini recente » Cod sursa (job #722386) | Cod sursa (job #3032495)
///dp(i)(j) de a lua j termeni in produs cu i ultim
#include <fstream>
#include <iomanip>
using namespace std;
ifstream cin ("dezastru.in");
ofstream cout ("dezastru.out");
const int N = 30;
long double dp[N + 1][N + 1];
long double a[N + 1];
int n, k;
long double ans, p = 1;
int main()
{
cin >> n >> k;
for (int i = 1; i <= n; ++i)
cin >> a[i], dp[i][0] = 1;
dp[0][0] = 1;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= i; ++j)
dp[i][j] = dp[i - 1][j - 1] * a[i] + dp[i - 1][j];
for (int i = k + 1; i <= n; ++i)
p *= double(i);
cout << setprecision(6) << fixed << dp[n][k] / p << '\n';
return 0;
}