Pagini recente » Cod sursa (job #1406215) | Cod sursa (job #372084) | Cod sursa (job #696282) | Cod sursa (job #1156459) | Cod sursa (job #93401)
Cod sursa(job #93401)
var a,p:array[1..500000] of int64;
n:longint;
procedure citire;
var i:longint;
x,y:int64;
begin
assign(input,'reguli.in');
reset(input);
readln(n);
readln(x);
for i:=2 to n do
begin
readln(y);
a[i-1]:=y-x;
x:=y;
end;
close(input);
n:=n-1;
end;
procedure prefix;
var k,i:longint;
begin
p[1]:=0;
k:=0;
for i:=2 to n do
begin
while (k>0) and (a[k+1]<>a[i]) do
k:=p[k];
if a[k+1]=a[i] then
inc(k);
p[i]:=k;
end;
end;
function ok(r:longint):boolean;
var i:longint;
begin
for i:=1 to r do
if a[i]<>a[n-r+i] then
begin
ok:=false;
exit;
end;
ok:=true;
end;
procedure afis(l:longint);
var i:longint;
begin
writeln(l);
for i:=1 to l do
writeln(a[i]);
end;
procedure secv;
var l,r,c:longint;
begin
for l:=1 to n do
begin
r:=n mod l;
c:=n div l;
if (p[n-r]>0) and ((n-r) mod (n-r-p[n-r])=0) and
((n-r)/(n-r-p[n-r])=c) and ok(r) then
begin
afis(l);
exit;
end;
end;
end;
begin
assign(output,'reguli.out');
rewrite(output);
citire;
prefix;
secv;
close(output);
end.