讨论 / 284因子约数,我80分,求做过的人解释错误原因~
hc199581 2012-08-04 02:00:00
点我顶贴 收藏 删除
状态: Unaccepted

测评机: 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.

#1 desprado2@2012-08-04 02:00:00
回复 删除
这个错了吗?

应该木有问题的

查看更多回复
提交回复