MRECAMAN - Recaman’s Sequence

Tác giả: ladpro98

Ngôn ngữ: Pascal

program mrecaman;
uses    math;
const   fi='';
var     a:array[0..500000] of longint;
        b:array[0..10000000] of boolean;
        c:array[0..100] of longint;
        inp:text;
        n,t,len,ii:longint;
        done:boolean;
procedure open;
begin
        assign(inp,fi);
        reset(inp);

end;

procedure process(t:longint);
var     i:longint;
begin
        if t<=n then
        begin
                if ii<len then writeln(a[t])
                else write(a[t]);
                exit;
        end;
        for i:=n+1 to t do
        begin
                a[i]:=a[i-1]-i;
                if (a[i]<=0) or (b[a[i]]) then
                a[i]:=a[i]+i+i;
                b[a[i]]:=true;
                done:=false;
        end;
        n:=t;
        if ii<len then writeln(a[t])
        else write(a[t]);
end;

procedure input;
begin
        len:=1;
        while c[len-1]<>-1 do
        begin
                readln(inp,c[len]);
                inc(len);
        end;
        dec(len,2);
end;

begin
        open;
        input;
        n:=0;
        a[n]:=0;
        b[0]:=true;
        ii:=1;
        while c[ii]<>-1 do
        begin
                process(c[ii]);

                inc(ii);
        end;
        close(inp);
end.

Download