Ао условию, у тебя два шкафа, в каждом из которых 128 полок, и в этих полках 4 единицы (во всех 128), значит в обоих шкафах 8 единиц, отсюда следует: Максимальное кол-во единиц при 126 полках с нулями и 2 полками с единицами (1111000v000111=1111111 и 0000000v1000000=1000000) т..е. в 3 шкафу будет 126 полок с нулями и 2 полки с 8 единицами. Минимальное кол-во при 127 полками нулей и 1 полкой единиц (1111000v1111000=1111000) т.е. в 3м шкафу будет 127 полок с нулями и 1 полка с 4 единицами. Значит максимум 8 единиц, а минимум 4
дешифровки: Const sh = '_.,'; Var St : String; i : Integer; Function DeCode(S : String; Tabl : String; k : Integer) : String; Var j,n : Integer; Begin For j:=1 to Length(S) do Begin n:=Pos(S[j],sh); If n>0 then Begin n:=n+k; While n>Length(sh) do n:=n-Length(sh); While n<=0 do n:=n+Length(sh); S[j]:=sh[n]; end end; DeCode:=S; end; Begin St:='ЗЫФЙГФШРЦ . ШД'; Writeln(Decode(St,sh,-6)); //For i:=-10 to 10 do Writeln(Decode(St,sh,i)); end.
Максимальное кол-во единиц при 126 полках с нулями и 2 полками с единицами
(1111000v000111=1111111 и 0000000v1000000=1000000) т..е. в 3 шкафу будет 126 полок с нулями и 2 полки с 8 единицами.
Минимальное кол-во при 127 полками нулей и 1 полкой единиц
(1111000v1111000=1111000) т.е. в 3м шкафу будет 127 полок с нулями и 1 полка с 4 единицами.
Значит максимум 8 единиц, а минимум 4
дешифровки:
Const sh = '_.,';
Var
St : String;
i : Integer;
Function DeCode(S : String; Tabl : String; k : Integer) : String;
Var j,n : Integer;
Begin
For j:=1 to Length(S) do
Begin
n:=Pos(S[j],sh);
If n>0 then
Begin
n:=n+k;
While n>Length(sh) do n:=n-Length(sh);
While n<=0 do n:=n+Length(sh);
S[j]:=sh[n];
end
end;
DeCode:=S;
end;
Begin
St:='ЗЫФЙГФШРЦ . ШД';
Writeln(Decode(St,sh,-6));
//For i:=-10 to 10 do Writeln(Decode(St,sh,i));
end.