Pagini recente » Cod sursa (job #2730567) | Cod sursa (job #566451) | Cod sursa (job #1433010) | Cod sursa (job #1580185) | Cod sursa (job #994291)
Cod sursa(job #994291)
#include <cstdio>
#include <bitset>
FILE *f=fopen("dezastru.in","r");
FILE *g=fopen("dezastru.out","w");
using namespace std;
const int Nmax = 26;
int v[ Nmax ],N,M;
double prob[ Nmax ],answer;
void calc()
{
long double rez=1;
for(int i = 1; i <= M; ++i)
rez*=1.0*prob[ v[ i ] ];
answer += rez;
}
void back(int k){
for( v[k] = v[k-1]+1; v[k] <= N-M+k; ++v[k] )
if(k<M)
back(k+1);
else calc();
}
int main()
{
fscanf(f,"%d%d",&N,&M);
for(int i = 1; i <= N; ++i)
fscanf(f,"%lf",&prob[i]);
back(1);
answer*=2;
for(int i = 2; i <= N-M ; ++i) answer *= i;
for(int i = 2; i <= N; ++i) answer /= i;
fprintf(g,"%.6lf",answer);
return 0;
}