Pagini recente » Cod sursa (job #1025955) | Cod sursa (job #2532555) | Cod sursa (job #2661706) | Cod sursa (job #923228) | Cod sursa (job #2531169)
#include<fstream>
#include<iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
const int Maxx=26;
double A[Maxx];
int sol[Maxx];
double ans;
long long fact(int n){
if(n==1) return 1;
return 1LL*n*fact(n-1);
}
bool valid(int k){
for(int i=1; i<k; ++i){
if(sol[i]==sol[k]) return 0;
}
return 1;
}
void bk(int k,int n,int p){
if(k==n+1){
double inter=1;
for(int i=1; i<=p; ++i){
inter*=A[sol[i]];
}
ans+=inter;
return;
}
for(int i=1; i<=n; ++i){
sol[k]=i;
if(valid(k)) {
bk(k+1,n,p);
}
}
}
int main() {
int n,k;
fin>>n>>k;
for(int i=1; i<=n; ++i){
fin>>A[i];
}
long long tot=fact(n);
bk(1,n,k);
fout<<setprecision(6)<<fixed<<(double)ans/tot;
return 0;
}