Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Tập A được xác định theo quy tắc:

  • 1 thuộc A
  • Nếu k thuộc A thì
    • 2k+1 thuộc A
    • 3k+1 thuộc A

Nhập N từ bàn phím ⇒ Xuất ra N số đầu tiên trong tập A

Ví dụ: N=8 ⇒ 1 3 4 7 9 10 13 15


var a:array[1..100000] of char;
    i,j,n,m:integer;
begin
    readln(n);
    j := 1;
    i := 1;
    a[1]:='x';
    repeat 
        if a[i]='x' then
        begin
            if (a[2*i+1]<>'x') and (j < n) then
            begin
                a[2*i+1]:='x';
                inc(j);
                m:=2*i+1;
            end;
            if (a[3*i+1]<>'x') and (j < n) then
            begin
                a[3*i+1]:='x';
                inc(j);
                m:=3*i+1;
            end;
            inc(i);
        end;
        if a[i]<>'x' then
            inc(i);
    until j>=n;
    for i:=1 to m do 
        if a[i]='x' then write(i,#32);
    readln;
end.