测评机: Xeost[5]
得分: 80分
提交日期: 2012-4-28 20:15:00
有效耗时: 1156毫秒
RQNOJ近期在线比赛列表
RQNOJ2012五月省选特别赛 时间:2012-5-2 13:00:00 [报名]
测试结果1: 通过本测试点|有效耗时156ms
测试结果2: 通过本测试点|有效耗时172ms
测试结果3: 通过本测试点|有效耗时156ms
测试结果4: 通过本测试点|有效耗时156ms
测试结果5: 通过本测试点|有效耗时157ms
测试结果6: 通过本测试点|有效耗时156ms
测试结果7: 通过本测试点|有效耗时156ms
测试结果8: 选手程序运行超过时限
测试结果9: 通过本测试点|有效耗时47ms
测试结果10:测试结果错误.错误结果为:0 正确结果应为:4
思路:
求出A的最小公倍数cc,B的最大公约数dd,
xx=dd/cc,
若xx为整数,则求xx的因数的个数(包括1和xx)为结果;
否则,输出0.
程序如下:
program p284(input,output);
var d,i,m:longint;
ab1,ab2:array [0..50] of longint;
xx:extended;
dd,cc:int64;
function gc(a,b:longint):longint;
begin
if a<b
then gc:=gc(b,a)
else if b=0
then gc:=a
else gc:=gc(b,a mod b);
end;
function cl(shu:int64):longint;
var zz:longint;
begin
cl:=0;
for zz:=1 to trunc(sqrt(shu)) do
if shu mod zz=0
then cl:=cl+1;
cl:=cl*2;
zz:=trunc(sqrt(shu));
if zz=sqrt(shu)
then cl:=cl-1;
end;
begin
readln(d);
for i:=1 to d do
read(ab1[i]);
readln;
readln(m);
for i:=1 to m do
read(ab2[i]);
cc:=ab1[1];
dd:=1;
for i:=2 to d do
begin
dd:=gc(ab1[i],cc);
cc:=trunc(cc*ab1[i]/dd);
end;
dd:=ab2[1];
for i:=2 to m do
dd:=gc(dd,ab2[i]);
xx:=dd/cc;
if trunc(xx)=xx
then writeln(cl(trunc(xx)))
else writeln(0);
readln;
readln;
end.