Воспользуемся законом де Моргана: НЕ(А ИЛИ B) = НЕ(A) И НЕ(B) = (НЕ(сумма цифр нечетная) И НЕ(число четное)). Из этого следует, что обе скобки отрицаются, то есть значения внутри них становятся противоположными: (Сумма цифр четная) И (число нечетное). И - означает, что условие внутри обоих скобок должно быть истинно, то есть должно выполняться.
begin var (n, k) := ReadInteger2('n,k->'); var p := ArrGen(n, t -> t + 1); var m := new integer[k, n div k]; var sum := p.Sum div k; for var i := 0 to k - 1 do begin var m_sum := sum; m[i, 0] := p[0]; m_sum := m_sum - m[i, 0]; p := p[1:]; for var j := 1 to (n div k) - 1 do begin if m_sum - p.Last > 0 then begin m[i, j] := p.max; m_sum := m_sum - p.Max; p := p[:p.IndexMax]; end else begin if p.Where(t -> t = m_sum).Count = 1 then m[i, j] := m_sum; p := p.Where(t -> t <> m_sum).ToArray; end; end; end; var t := true; for var i := 0 to m.RowCount - 2 do if (m.Row(i).sum <> m.Row(i + 1).Sum) or (p.Length <> 0) then begin t := false; break; end; if t then m.Println else 0.Println; end.
Из этого следует, что обе скобки отрицаются, то есть значения внутри них становятся противоположными:
(Сумма цифр четная) И (число нечетное).
И - означает, что условие внутри обоих скобок должно быть истинно, то есть должно выполняться.
1. 2+2 = 4 - сумма цифр четная, число четное - исключаем.
2. 3+4 = 7 - сумма цифр нечетная, число четное - исключаем.
3. 4+1 = 5 - сумма цифр нечетная, число нечетное - исключаем.
4. 7+5 = 12 - сумма цифр четная, число нечетное - подходит.
ответ: 4.