题意
把上下两排的数分别相乘,上面的数除以下面的数,把它们化为最简分数。
程序:
var
n1,n2:int64;
a,s,l:array[0..100101,1..2]of int64;
bz,z,y:int64;
i,j,k:longint;
ss:array[0..12624]of int64;
procedure aa;
var
i,bz1:longint;
begin
for i:=2 to 10000 do
begin
bz1:=0;
for j:=2 to trunc(sqrt(i)) do
if (i mod j=0) then
begin
ss[i]:=j;
bz1:=j;
break;
end;
if bz1=0 then ss[i]:=i;
end;
end;
begin
read(n1);
for i:=1 to n1 do
read(a[i,1]);
read(n2);
for i:=1 to n2 do
read(a[i,2]);
aa;
for i:=1 to n1 do
begin
bz:=a[i,1];
while bz>1 do
begin
inc(s[ss[bz],1]);
bz:=bz div ss[bz];
end;
end;
for i:=1 to n2 do
begin
bz:=a[i,2];
while bz>1 do
begin
inc(s[ss[bz],2]);
bz:=bz div ss[bz];
end;
end;
for i:=2 to 10000 do
if (s[i,1]>0)and(s[i,2]>0) then
if (s[i,1]>s[i,2]) then
begin
s[i,1]:=s[i,1]-s[i,2];
s[i,2]:=0;
end else
begin
s[i,2]:=s[i,2]-s[i,1];
s[i,1]:=0;
end;
l[2300,1]:=1; l[2300,2]:=1;
for j:=2 to 10000 do
begin
z:=s[j,1];
while z>0 do
begin
dec(z);
for k:=2 to 2300 do
l[k,1]:=l[k,1]*j;
for k:=2300 downto 2 do
if l[k,1]>9 then
begin
l[k-1,1]:=l[k-1,1]+l[k,1] div 100000000;
l[k,1]:=l[k,1] mod 100000000;
end;
end;
end;
for j:=2 to 10000 do
begin
z:=s[j,2];
while z>0 do
begin
dec(z);
for k:=2 to 2300 do
l[k,2]:=l[k,2]*j;
for k:=2300 downto 2 do
if l[k,2]>9 then
begin
l[k-1,2]:=l[k-1,2]+l[k,2] div 100000000;
l[k,2]:=l[k,2] mod 100000000;
end;
end;
end;
bz:=0;
for i:=1 to 2 do
begin
for j:=0 to 2300 do
if l[j,i]>0 then
begin
bz:=j;
break;
end;
write(l[bz,i]);
for j:=bz+1 to 2300 do
begin
y:=l[j,i]; z:=0;
if y=0 then y:=1;
while y<100000000 do
begin
y:=y*10;
z:=z+1;
end;
for k:=2 to z do write('0');
write(l[j,i]);
end;
write(' ');
end;
end.