Pagini recente » Diferente pentru teorema-chineza-a-resturilor intre reviziile 64 si 63 | Cod sursa (job #753406) | Cod sursa (job #162502) | Cod sursa (job #731069) | Cod sursa (job #991552)
Cod sursa(job #991552)
#include <cstdio>
using namespace std;
int n,k1;
double p1=1,pt,p[25];
void back(int k,int t,long double pr)
{
if(k==k1)
{
pt+=pr;
}
else
{
for(int i=t;i+k1<=n+k;++i)
{
back(k+1,i+1,pr*p[i]);
}
}
}
void comb()
{
int i;
for(i=n-k1+1;i<=n;++i) p1*=i;
for(i=2;i<=k1;++i) p1/=i;
}
int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
int i;
scanf("%d%d",&n,&k1);
for(i=0;i<n;++i) scanf("%lf",&p[i]);
back(0,0,1);
comb();
printf("%.6lf\n",pt/p1);
return 0;
}