Pagini recente » Cod sursa (job #2100339) | Cod sursa (job #517852) | Cod sursa (job #1335146) | Cod sursa (job #1641887) | Cod sursa (job #20000)
Cod sursa(job #20000)
{reguli}
const maxlung=500000;
var n,l:longint;
a,d:array [0..maxlung] of int64;
p:array [0..maxlung] of longint;
procedure citire;
var i:longint;
begin
assign(input,'reguli.in');
reset(input);
readln(n);
for i:=0 to n-1 do
readln(a[i]);
close(input);
for i:=0 to n-2 do
d[i]:=a[i+1]-a[i];
end;
procedure prefix;
var k,i:longint;
begin
k:=0;
p[0]:=0;
for i:=1 to n-2 do
begin
while (k>0)and(d[i]<>d[k]) do
k:=p[k-1];
if d[k]=d[i]
then inc(k);
p[i]:=k;
end;
end;
procedure prel;
var i:longint;
begin
l:=1;
for i:=1 to n-2 do
if d[i]<>d[i mod l]
then l:=i+1-p[i];
end;
procedure scrie;
var i:longint;
begin
assign(output,'reguli.out');
rewrite(output);
writeln(l);
for i:=0 to l-1 do
writeln(d[i]);
close(output);
end;
begin
citire;
prefix;
prel;
scrie;
end.