Pagini recente » Cod sursa (job #168556) | Diferente pentru utilizator/robert intre reviziile 4 si 3 | Cod sursa (job #1837260) | Monitorul de evaluare | Cod sursa (job #2026958)
#include<fstream>
#include<iostream>
#include<iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int n,k;
long double x[35],s,t,nr,r[35][35];
int y[35];
void ve(long double &x)
{
x=1;
for(int i=1;i<=n;i++)
x*=i;
}
long double fct(int x)
{
long double r=1;
for(int i=1;i<=x;i++)
r*=i;
return r;
}
int main()
{
fin>>n>>k;
t=1;
for(int i=1;i<=n;i++)
fin>>x[i];
if(k==0)
{
fout<<1;
return 0;
}
ve(nr);
for(int i=1;i<=n;i++)
for(int j=1;j<=k;j++)
{
if(j==1)
r[i][j]=x[i];
else
for(int h=i-1;h>=1;h--)
r[i][j]+=r[h][j-1]*x[i];
if(j==k)
s+=r[i][j];
}
fout<<fixed<<setprecision(10)<<s*fct(n-k)*fct(k)/nr;
}