Pagini recente » Cod sursa (job #1954683) | Cod sursa (job #2141741) | Cod sursa (job #2818959) | Cod sursa (job #2896238) | Cod sursa (job #2050106)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int n,k,sol[26],nprim;
double num[26],probabilitate;
long long fact=1,fact2=1,kfact=1;
void calcul()
{
double prob=1;
for(int i=1;i<=k;i++)prob*=num[sol[i]];
prob*=kfact;
probabilitate+=prob;
}
void BK(int nr)
{
for(int i=sol[nr-1]+1;i<=n-k+nr;i++)
{
sol[nr]=i;
if(nr==k)
{
calcul();
}else BK(nr+1);
}
}
int main()
{
fin>>n>>k;
for(int i=1;i<=n;i++)
{
fin>>num[i];
}
nprim=n-k;
for(int i=1;i<=k;i++)kfact*=i;
for(int i=n-nprim+1;i<=n;i++)fact*=i;
for(int i=1;i<=nprim;i++)fact2*=i;
fact/=fact2;
BK(1);
k++;
for(k;k<=n;k++)kfact*=k;
fout<<fixed<<setprecision(6)<<probabilitate/kfact;
return 0;
}