回 帖 发 新 帖 刷新版面

主题:求助大家!!!!

丑数(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个回复)

沙发

我哪里弄错了吗?怎么这么大?
这个是全部输出出来,并且都按顺序保存在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.

我来回复

您尚未登录,请登录后再回复。点此登录或注册