Pagini recente » Cod sursa (job #972940) | Monitorul de evaluare | Cod sursa (job #934440) | Cod sursa (job #2707743) | Cod sursa (job #195466)
Cod sursa(job #195466)
#include<fstream>
using namespace std;
int N, K;
long double p[30];
long double Pt;
long long cnk=1;
ofstream g("dezastru.out");
void Comb(int n, int k){
int i;
if((k<<1)<n)
k=n-k, n-=k;
for(i=k+1;i<=n;++i)
cnk*=i;
for(i=1;i<=n-k;++i)
cnk/=i;
}
void back(int i, int x, long double Pc){
int j, l=N-K+i+1;
long double pc=1;
for(j=x;j<l;++j){
pc=Pc*p[j];
if(i==K)
Pt+=pc/cnk;
else back(i+1, j+1, pc);
}
}
int main(){
int i;
ifstream f("dezastru.in");
f>>N>>K;
for(i=1;i<=N;i++)
f>>p[i];
f.close();
Comb(N,K);
back(1,1,1);
g<<Pt<<'\n';
g.close();
return 0;
}