Pagini recente » Cod sursa (job #562393) | Cod sursa (job #931931) | Cod sursa (job #1157955) | Cod sursa (job #2802695) | Cod sursa (job #39486)
Cod sursa(job #39486)
{
Problema dezastru
}
Program dezastru;
Var k, n, m, i : byte;
s : array[1..25] of byte;
v : array[1..25] of real;
cod1, cod2 : boolean;
nr, fac : longint;
p, suma : real;
Procedure succ( var cod : boolean );
Begin
if s[k] < n then Begin
cod := true;
s[k] := s[k]+1;
End
else cod := false;
End;
Procedure cond( var cod : boolean );
Var i : Integer;
BEgin
cod := true;
if k > n then BEgin cod := false; exit; End;
End;
Begin
Assign( input, 'dezastru.in' );
Reset( input );
Readln( n, m );
For i := 1 to n do
Read( v[i] );
Close( input );
k := 1;
s[1] := 0;
nr := 0;
fac := 1;
for i := 2 to m do
fac := fac*i;
Repeat
Repeat
succ( cod1 );
if cod1 then cond( cod2 );
Until ( ( cod1 ) and ( cod2 ) ) or ( not cod1 );
If cod1 then
If k = m then
Begin
nr := nr+1;
suma := 1;
For i := 1 to k do
suma := suma*v[s[i]];
p := p+fac*suma;
End
else
Begin
k := k+1;
s[k] := s[k-1];
End
else
k := k-1;
Until k <= 0;
p := p/(nr*fac);
Assign( output, 'dezastru.out' );
Rewrite( output );
Writeln( p:0:6 );
Close( output );
End.