Mai intai trebuie sa te autentifici.
Cod sursa(job #421954)
Utilizator | Data | 21 martie 2010 21:30:52 | |
---|---|---|---|
Problema | Dezastru | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.81 kb |
#include<iostream>
#include<fstream>
#include<iomanip.h>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int v[45],k,n,ct,combinari,comb;
double p[50],prod,s;
void Prelucreaza()
{
prod = 1;
ct ++;
for(int i=1;i<=k;i++)
prod*=p[v[i]];
s+=prod;
}
void Genereaza(int pas)
{
if(ct<comb)
{
if(pas == k+1)
Prelucreaza();
else
for(int i=v[pas-1]+1; i<=n-k+pas; i++)
{
v[pas]=i;
Genereaza(pas+1);
}
}
}
int main()
{
int i;
int fact=1,fact2=1,fact3=1;
fin>>n>>k;
for(i=1;i<=n;i++)
fin>>p[i];
for(i=1;i<=n;i++)
fact*=i;
for(i=1;i<=k;i++)
fact2*=i;
for(i=1;i<=n-k;i++)
fact3*=i;
comb=fact/(fact2*fact3);
Genereaza(1);
fout<<fixed;
fout<<setprecision(6);
fout<<s/ct;
return 0;
}