记录编号 | 22295 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | 八 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | Pascal | 运行时间 | 0.154 s | ||
提交时间 | 2010-11-18 15:33:44 | 内存使用 | 0.11 MiB | ||
program eight; var i,j,k,l:longint; a,b:int64; s:array[1..20]of longint; n:longint; max:int64; m:array[1..20]of boolean; w:array[0..20]of longint; function gbs(const x,y:int64):int64; var a,b,c,d:int64; begin a:=x; b:=y; d:=a*b; c:=a mod b; while c<>0 do begin a:=b; b:=c; c:=a mod b; end; exit(d div b); end; procedure search(const x,y:longint); var i,j:longint; p,q:int64; v:boolean; begin if w[0]=y then begin v:=false; q:=8; for i:=1 to w[0] do begin q:=gbs(q,s[w[i]]); if q>b then begin v:=true; break; end; end; if (not v) then begin if (a mod q)=0 then p:=a div q else p:=(a div q)+1; p:=(b div q)-p+1; if (y mod 2)=1 then max:=max-p else max:=max+p; end; end else begin if (n-x+1)>=(y-w[0]) then begin for i:=x to n do if m[i]=false then begin inc(w[0]); w[w[0]]:=i; m[i]:=true; search(i+1,y); w[w[0]]:=0; dec(w[0]); m[i]:=false; end; end; end; end; procedure go; var i,j,k,l:longint; begin for i:=1 to n do begin for j:=1 to n do m[j]:=false; for j:=1 to 20 do w[j]:=0; w[0]:=0; search(1,i); end; end; begin assign(input,'eight.in'); reset(input); assign(output,'eight.out'); rewrite(output); readln(n); for i:=1 to n do read(s[i]); readln; readln(a,b); if (a mod 8)=0 then max:=a div 8 else max:=(a div 8)+1; max:=(b div 8)-max; go; writeln(max+1); close(input); close(output); end.