CON - Vòng tròn số
Tác giả: RR
Ngôn ngữ: Pascal
{$R+,Q+}
{$Mode objFPC}
uses math;
const
FINP = '';
FOUT = '';
MAXN = 100111;
var
f1,f2 : text;
a,b : array[1..MAXN] of int64;
n : longint;
procedure openF;
begin
assign(f1,FINP); reset(f1);
assign(f2,FOUT); rewrite(f2);
end;
procedure closeF;
begin
close(f1);
close(f2);
end;
procedure inp;
var
i:longint;
begin
read(f1,n);
for i:=1 to n do
read(f1,b[i]);
end;
procedure solve0;
var
i:longint;
begin
a[1]:=0; a[2]:=0;
for i:=3 to n do
a[i]:=b[i-1]-a[i-2]-a[i-1];
end;
procedure solve;
var
i,j,u,v:longint;
begin
i:=1; a[1]:=0;
repeat
j:=i; i:=i+3; if i>n then i-=n;
u:=j+1; if u>n then u-=n;
v:=j+2; if v>n then v-=n;
a[i]:=a[j]+b[v]-b[u];
until i=1;
j:=(b[2]-a[1]-a[2]-a[3]) div 3;
for i:=1 to n do
a[i]+=j;
end;
procedure ans;
var
i:longint;
begin
for i:=1 to n do
write(f2,a[i],' ');
writeln(f2);
end;
begin
openF;
inp;
if n mod 3=0 then solve0
else solve;
ans;
closeF;
end.