Pagini recente » Cod sursa (job #2041341) | Cod sursa (job #1047375) | Cod sursa (job #2937010) | Cod sursa (job #2382712) | Cod sursa (job #897231)
Cod sursa(job #897231)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int n, ev, as, st[30], i, k, l;
double v[30], p, s = 1, suma = 0 ;
int fact (int n)
{
int prod = 1;
while(n)
prod *= n--;
return prod;
}
void init()
{ st[k] = 0; }
int succesor()
{
if( st[k] < n )
{
st[k]++;
return 1;
}
return 0;
}
int valid()
{
for( i = 1; i < k; i++ )
if( st[i] == st[k] )
return 0;
return 1;
}
int solutie ()
{ return k == n; }
void calc()
{
p = 1;
s = 0;
for( i = 1; i <= l; i++ )
p *= v[ st[i] ] ;
s += p;
suma += s/fact(n);
}
void back()
{
k = 1;
init();
while( k > 0 )
{
as = 1;
ev = 0;
while( as && !ev )
{
as = succesor();
if( as )
ev = valid();
}
if( as )
if( solutie() )
calc();
else
{ k++; init(); }
else
k--;
}
}
int main()
{
f>>n>>l;
for( i = 1; i <= n; i++)
f>>v[i];
st[k] = 0;
back();
g<<suma;
return 0;
}