Pagini recente » Cod sursa (job #3190848) | Cod sursa (job #1834757) | Cod sursa (job #1669830) | Cod sursa (job #2963492) | Cod sursa (job #549567)
Cod sursa(job #549567)
#include<fstream>
using namespace std;
short n,m,x[26];
long long var=1,per=1;
double rasp,p[26];
void posibilitati()
{long long i,j,o=1,lk;
if(m>n-m) i=m,j=n-m;
else i=n-m,j=m;
i++;
for(lk=2;lk<i;lk++)
per*=lk;
for(;i<=n;i++)
var*=i;
for(i=2;i<=j;i++)
o*=i;
var/=o;
per*=o;
}
void calculeaza()
{short i;
double aux=1;
for(i=1;i<=m;i++)
aux*=p[x[i]];
rasp+=aux;
}
void comb(int k)
{int i;
for(i=x[k-1]+1;i<=n;i++)
{x[k]=i;
if(k==m) calculeaza();
else comb(k+1);
}
}
int main()
{int i;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
in>>n>>m;
for(i=1;i<=n;in>>p[i],i++);
in.close();
posibilitati();
comb(1);
out<<rasp*per/var<<'\n';
out.close();
return 0;
}