Pagini recente » Cod sursa (job #209071) | Cod sursa (job #2649935) | Cod sursa (job #1587910) | Cod sursa (job #1206017) | Cod sursa (job #78798)
Cod sursa(job #78798)
program reguli;
const
fin='reguli.in';
fout='reguli.out';
var
a:array[1..500000] of int64;
pi:array[1..500000] of longint;
d,q,i,c,r,j,k,n,x,y:longint;
t:array[0..1] of int64;
old,new:longint;
ok:array[1..500000] of boolean;
begin
assign(input,fin);
reset(input);
readln(n);
readln(t[0],t[1]);
a[1]:=t[1]-t[0];
new:=1;old:=0;
for i:=3 to n do
begin
old:=new;new:=old xor 1;
readln(t[new]);
a[i-1]:=t[new]-t[old];
end;
dec(n);
assign(output,fout);
rewrite(output);
k:=0;
pi[1]:=0;
for q:=2 to n do
begin
while (k>0) and (a[k+1]<>a[q]) do
k:=pi[k];
if a[k+1]=a[q] then
inc(k);
pi[q]:=k;
end;
k:=n;
while k>0 do
begin
ok[pi[k]]:=true;
k:=pi[k];
end;
for d:=1 to n do
begin
r:=n mod d;
c:=n div d;
if (n-r-pi[n-r]<>0)and(ok[r]) then
if ((n-r) mod (n-r-pi[n-r])=0)and((n-r)div(n-r-pi[n-r])=c) then
begin
writeln(d);
for i:=1 to d do
writeln(a[i]);
break;
end;
end;
close(output);
end.