Pagini recente » Cod sursa (job #1260885) | Cod sursa (job #2458646) | Cod sursa (job #1625783) | Cod sursa (job #853842) | Cod sursa (job #961109)
Cod sursa(job #961109)
#include<fstream>
#include<iomanip>
#define NMAX 30
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
double v[NMAX];
int N,K;
double DP[NMAX][NMAX];
long double nr_comb;
double Answer;
void Dynamics( void )
{
DP[0][0]=1;
for(int i(1) ; i <= N ; ++i )
{
DP[i][0]=1;
for(int ii(1) ;ii <= i ; ++ii )
DP[i][ii]=DP[i-1][ii-1]*v[i]+DP[i-1][ii];
}
}
long double Solve( int number )
{
long double res(1);
for(int i(1) ; i <= number ; ++i )
res*=i;
return res;
}
void Write ( void )
{
nr_comb=Solve(N)/(Solve(N-K)*Solve( K));
Answer=DP[N][K];
g<<setprecision(6)<<Answer/nr_comb<<"\n";
exit(0);
}
int main ( void )
{
f>>N>>K;
for( int i(1) ; i <= N ; ++i )
f>>v[i];
Dynamics();
Write();
return 0;
}
/*
#include<fstream>
#include<iomanip>
#define NMAX 30
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int N,K;
double v[NMAX],prod;
double sum,Answer;
int s[NMAX],nr;
void Backtracking( int k )
{
if( k== K +1 )
{
sum+=prod;
++nr;
return ;
}
else
for(int i(s[k-1] +1 ) ; i <= N ; ++ i)
{
s[k]=i;
prod*=v[i];
Backtracking(k+1);
prod/=v[i];
}
}
void Write ( void )
{
Answer=sum/nr;
g<<setprecision(6)<<Answer<<"\n";
exit(0);
}
int main ( void )
{
f>>N>>K;
prod=1;
for( int i(1) ; i <= N ; ++i )
f>>v[i];
Backtracking(1);
Write();
return 0;
}
*/