Пусть в "долях" a < = b < = c вершин, и проведены все рёбра между разными "долями". так как из каждой вершины, лежащей в первой "доле", можно провести только b + c рёбер, из второй доли — a + c рёбер, из третьей — a + b рёбер, то общее количество рёбер равно (a * (b + c) + b * (a + c) + c * (a + b))/2 = ab + ac + bc (деление на 2 возникает из-за того, что каждое ребро подсчитывается дважды). нужны такие a, b, c, при которых значение выражения ab + bc + ac будет максимально. максимальное значение можно найти перебором. python 3: max_value = 0 for a in range(40//3 + 1): for b in range(a, (40 - a)//2 + 1): c = 40 - a - b value = a * b + a * c + b * c max_value = max(max_value, value) print(max_value) ответ. 533
Алгоритм: выставляем некий индикатор = 0 идем по массиву если находим элемент больше 7, выставляем индикатор = 1, прекращаем просмотр массива, выводим номер элемента. Если дошли до последнего элемента и все меньше 7 (индикатор = 0), выводим соответствующее сообщение.
Прога: program test1; var M1: array [1..60] of integer; ind, i: integer;
begin ind :=0; i := 1; repeat if M1[i]>7 then begin writeln(i); ind := 1; i := 60; end; inc(i); if ((i>60) and (ind=0)) begin writeln('массив не содержит элементов, больших 7'); ind := 1; end; until(ind=1); end;
выставляем некий индикатор = 0
идем по массиву
если находим элемент больше 7, выставляем индикатор = 1, прекращаем просмотр массива, выводим номер элемента.
Если дошли до последнего элемента и все меньше 7 (индикатор = 0), выводим соответствующее сообщение.
Прога:
program test1;
var
M1: array [1..60] of integer;
ind, i: integer;
begin
ind :=0;
i := 1;
repeat
if M1[i]>7 then
begin
writeln(i);
ind := 1;
i := 60;
end;
inc(i);
if ((i>60) and (ind=0))
begin
writeln('массив не содержит элементов, больших 7');
ind := 1;
end;
until(ind=1);
end;