总有一个点TLE
ssxyh帮忙看一下
var a,b:array[1..50]of longint;
d,m,o,i:integer;
ab,by,p,j:qword;
function gcd(x,y:longint):longint;
begin
if y=0 then gcd:=x else gcd:=gcd(y,x mod y);
end;
begin
readln(d);
for i:=1 to d do read(a[i]);
readln;
readln(m);
for i:=1 to m do read(b[i]);
ab:=a[1];
for i:=2 to d do ab:=ab*a[i] div gcd(ab,a[i]);
by:=b[1];
for i:=2 to m do by:=gcd(by,b[i]);
if (by<ab)or(by mod ab<>0) then
begin
writeln(0);
exit;
end;
if by=ab then
begin
writeln(1);
exit;
end;
p:=by div ab;
o:=0;
j:=0;
while j<p do
begin
inc(j);
if p mod j=0 then inc(o);
end;
writeln(o);
end.