Pagini recente » Cod sursa (job #971532) | Borderou de evaluare (job #1521018) | Borderou de evaluare (job #1549322) | Cod sursa (job #3333557) | Cod sursa (job #971533)
Cod sursa(job #971533)
#include<stdio.h>
#include<iostream>
using namespace std;
double destroy[32];
int n, k;
double total = 0, product = 1;
double number = 0;
bool invers = 0;
void back( char level, char last, double destroyer) {
if( level == k + 1) {
if( invers )
total += product / destroyer;
else
total += destroyer;
number++;
return;
}
for( int i = last; i <= n; ++i) {
back( level + 1, i + 1, destroy [i] * destroyer);
}
}
int main() {
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
cin>>n>>k;
if( k > n / 2 )
invers = 1, k = n - k;
for( int i = 1; i <= n; ++i) {
cin>>destroy[i];
product *= destroy[i];
}
back( 1, 1, 1);
cout<< total/number;
return 0;
}