#include<bits/stdc++.h>
using namespace std;
const int N=16,M=1<<16;
double f[M][90];
double p[N];
int n,m;
double dp(int s,int c,int r){
if(f[s][c]) return f[s][c];
if(c>=r*m) return 0;
for(int i=0;i<n;i++)
if(s>>i&1) f[s][c]+=p[i]*(dp(s,c+1,r)+1);
else f[s][c]+=p[i]*(dp(s|1<<i,c,r-1)+1);
return f[s][c];
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++) cin>>p[i];
// cout<<dp(0,0,n)<<endl;
printf("%.10lf\n",dp(0,0,n));
}
10-28
07-01
292
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
10-30
1619
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)