Program Project1; var a:array[1..5] of Integer; i, j, sum:Integer; s:string; begin Readln(s); sum:=0; for i:=1 to 5 do begin if (Length(s)>=2) then begin j:=Pos(' ', s); a[i]:=StrToInt(Copy(s, 1, j-1)); sum:=sum+a[i]; Delete(s, 1, j); end else begin a[i]:=StrToInt(s); sum:=sum+a[i]; end; end; for i:=1 to 5 do begin if (a[i]<>0) then begin a[i]:=a[i]-sum; Write(a[i], ' '); end else begin a[i]:=a[i]; Write(a[i], ' '); end; end; end.
Берешь с конца мысленно расставляешь над цифрами очерёдность от нуля до десяти потом смотришь над какими единичками какая цифра после смотришь в таблицу квадратов двойки. циферка над единичкой соответствует степени цифры 2 переводишь степень в цифру (2 во 2 степени = 4) складываешь что получилось и вуаля от двоичной к десятичной. наоборот же проще смотришь какую максимальную степень вмещает число( 9 вмещает 2 в 3 степени) пишешь степень от основного отнимаешь её и так пока не напишешь набор степеней после смотришь в таблицу и пишешь 0 если нету 1 если есть такая степень в написанных тобою (нам так объясняли)
var
a:array[1..5] of Integer;
i, j, sum:Integer;
s:string;
begin
Readln(s);
sum:=0;
for i:=1 to 5 do
begin
if (Length(s)>=2) then
begin
j:=Pos(' ', s);
a[i]:=StrToInt(Copy(s, 1, j-1));
sum:=sum+a[i];
Delete(s, 1, j);
end
else
begin
a[i]:=StrToInt(s);
sum:=sum+a[i];
end;
end;
for i:=1 to 5 do
begin
if (a[i]<>0) then
begin
a[i]:=a[i]-sum;
Write(a[i], ' ');
end
else
begin
a[i]:=a[i];
Write(a[i], ' ');
end;
end;
end.