===== PascalABC.NET =====
begin
var СписокСлов := ReadlnString('Список слов через пробел:').ToWords;
var ИсходныйСловарь := new Dictionary<char, integer>;
var РабочийСловарь := new Dictionary<char, integer>;
foreach var Символ in ReadlnString('Слово:') do
ИсходныйСловарь[Символ] := ИсходныйСловарь.Get(Символ) + 1;
var СтрокаВывода: string;
foreach var Слово in СписокСлов do
begin
foreach var Символ in Слово do
РабочийСловарь[Символ] := РабочийСловарь.Get(Символ) + 1;
var МожноПостроитьСлово := True;
foreach var ЭлементРабочегоСловаря in РабочийСловарь do
begin
var Ключ := ЭлементРабочегоСловаря.Key;
var ПределПовторовБуквы: integer;
if ИсходныйСловарь.TryGetValue(Ключ, ПределПовторовБуквы) then
begin
if ЭлементРабочегоСловаря.Value > ПределПовторовБуквы then
begin
МожноПостроитьСлово := False;
break
end
end
else
begin
МожноПостроитьСлово := False;
break
end
end;
if МожноПостроитьСлово then
begin
if СтрокаВывода <> '' then
СтрокаВывода += ', ';
СтрокаВывода += Слово
end;
РабочийСловарь.Clear;
end;
Println(СтрокаВывода)
end.
const
N = 5;
var
B: array[1..N] of integer;
Sum, Min, Min_i, Max, i: integer;
Begin
WriteLn('Введите массив: ');
For i := 1 to N do
Read(B[i]);
Sum := 0;
Min := B[1];
Max := B[1];
For i := 1 to N do
Begin
if (B[i] mod 2 <> 0) then
Sum := Sum + B[i];
if (B[i] > Max) then
Max := B[i];
if (B[i] <= Min) then
begin
Min := B[i];
Min_i := i;
end;
End;
For i := 1 to Min_i - 1 do
B[i] := (Min + Max) div 2;
For i := N downto 1 do
if ((B[i] mod 4 = 0) and (i < N)) then
begin
B[i+1] := 0;
break;
end;
WriteLn('Сумма нечётных элементов: ', Sum);
WriteLn('Получившийся массив: ', B);
End.