CON - Vòng tròn số

Tác giả: flashmt

Ngôn ngữ: Pascal

const max=100000;
var n,sum:longint;
    a,b:array[1..max] of longint;
procedure rf;
var i:longint;
begin
     readln(n);
     sum:=0;
     for i:=1 to n do
     begin
          read(b[i]);
          sum:=sum+b[i];
     end;
     sum:=sum div 3;
end;

procedure pr;
var t,u,i:longint;
begin
     t:=0; u:=0;
     if n mod 3 = 1 then
     begin
          for i:=1 to n div 3 do
          begin
               t:=t+b[i*3];
               u:=u+b[i*3+1];
          end;
          a[1]:=sum-t;
          a[2]:=sum-u;
          for i:=3 to n do
              a[i]:=b[i-1]-a[i-1]-a[i-2];
     end
     else
     begin
          if n mod 3 = 2 then
          begin
               for i:=1 to n div 3 do
               begin
                    t:=t+b[i*3+2];
                    u:=u+b[i*3+3];
               end;
               u:=u+b[1];
               a[1]:=b[2]+t-sum;
               a[2]:=b[3]+u-sum;
               for i:=3 to n do
                   a[i]:=b[i-1]-a[i-1]-a[i-2];
          end
          else
          begin
               a[1]:=0;
               a[2]:=0;
               for i:=3 to n do
                   a[i]:=b[i-1]-a[i-1]-a[i-2];
          end;
     end;
end;

procedure wf;
var i:longint;
begin
     for i:=1 to n do write(a[i],' ');
end;

begin
     rf;
     pr;
     wf;
end.

Download