主题:求助大家!!!!
zzj12345
[专家分:160] 发布于 2010-08-13 22:02:00
丑数(ugly)
【问题描述】所谓丑数,就是指那些因子只含2,3,5的数。1,2,3,4,5,6,8,9,10,12,15是最前面的11个丑数。为了方便起见,把1也看作是丑数。请你编写一个程序,输入n,寻找并打印第n个丑数。
【输入数据】
输入文件仅包含一个整数n(0<n<3000)。
【输出数据】
输出文件仅包含一个整数,表示所求的第n个丑数。
【样例】
ugly.in
11
ugly.out
15
本人只对了6个测试点
回复列表 (共1个回复)
沙发
小田甜 [专家分:3910] 发布于 2010-08-14 03:06:00
我哪里弄错了吗?怎么这么大?
这个是全部输出出来,并且都按顺序保存在a里面了。
var
a:array [1..3000] of int64;
i:word; n2,n3,n5,m2,m3,m5:int64;
begin
a[1]:=1; write(a[1]:20);
n2:=1; n3:=1; n5:=1;
n2:=1; n3:=1; n5:=1;
m2:=2; m3:=3; m5:=5;
for i:=2 to 3000 do begin
if (m2<=m3) and (m2<=m5) then begin
a[i]:=m2; inc(n2);
if m3=m2 then begin inc(n3); m3:=a[n3]*3; end;
if m5=m2 then begin inc(n5); m5:=a[n5]*5; end;
m2:=a[n2]*2;
end else if (m3<m2) and (m3<=m5) then begin
a[i]:=m3; inc(n3);
if m5=m3 then begin inc(n5); m5:=a[n5]*5; end;
m3:=a[n3]*3;
end else begin
a[i]:=m5; inc(n5); m5:=a[n5]*5;
end;
write(a[i]:20);
end;
end.
我来回复