type tt=array [1..6] of boolean;
var
p:array [1..6] of real;
i:longint;a:tt;j,u,d:byte;
function try(const n:byte;const m:byte):real;
var
i,j:byte; h:byte; t:byte;
ans,out:real;
rat:real;
min:real;
begin
if m=1 then begin try:=0; exit; end;
t:=0;ans:=0;rat:=1;
for i:=n to n+u-1 do begin
h:=(i-1) mod u+1;
if not a[h] then continue;
t:=t+1;min:=1E+30;
for j:=1 to u do if a[j] and (j<>i) then begin
a[j]:=false;
out:=ans+rat*p[h]*(t+try(h+1,m-1));
a[j]:=true;
if out<min then min:=out;
end;
ans:=min; rat:=rat*(1-p[h]);
end;
try:=(ans+rat*m)/(1-rat);
end;
begin
readln(u);for i:=1 to u do read(p[i]);
for i:=1 to u do p[i]:=p[i]/100;
fillchar(a,sizeof(a),true);
writeln(try(1,u):3:3);
end.
我后面可能来不了了.
谁能改出来不妨自己提交.