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.