Pagini recente » Cod sursa (job #273141) | Cod sursa (job #1299585) | Cod sursa (job #1365152) | Cod sursa (job #256346) | Cod sursa (job #3032491)
///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;
int main()
{
cin >> n >> k;
for (int i = 1; i <= n; ++i)
cin >> a[i], dp[i][1] = a[i];
for (int i = 2; i <= n; ++i)
for (int j = 2; j <= i; ++j)
{
double sum = 0;
for (int i1 = i - 1; i1 >= j - 1; --i1)
sum += dp[i1][j - 1];
dp[i][j] = sum * a[i];
}
for (int i = k; i <= n; ++i)
ans += dp[i][k];
for (int i = 2; i <= k; ++i)
ans *= double(i);
for (int i = 2; i <= n; ++i)
ans /= double(i);
cout << setprecision(6) << fixed << ans << '\n';
return 0;
}