Cod sursa(job #22428)

Utilizator andradaqAndrada Georgescu andradaq Data 26 februarie 2007 15:23:26
Problema Reguli Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.72 kb
var f:text;
    v,p:array[1..500000] of longint;
    n,i:longint;
    x0,x1,l,r,c:longint;

procedure prefix;
var k,q:integer;
begin
p[1]:=0; k:=0;
for q:=2 to n-1 do
  begin
  while (k>0)and(v[k+1]<>v[q]) do
     k:=p[k];
  if v[k+1]=v[q] then inc(k);
  p[q]:=k;
  end;
end;

begin
assign(f,'reguli.in'); reset(f);
readln(f,n);
readln(f,x0);
for i:=1 to n-1 do
 begin
 readln(f,x1);
 v[i]:=x1-x0;
 x0:=x1;
 end;
close(f);

prefix;
dec(n);

l:=1;
repeat
 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 ) then break;
 inc(l);
until 1=0;

assign(f,'reguli.out'); rewrite(f);
writeln(f,l);
for i:=1 to l do
 writeln(f,v[i]);
close(f);
end.