Если текст будет в строчку,как обычно оно тут бывает,скачай мой тхт,там код в нормальном виде
var a, b, c: integer; a1, b1, c1: integer; beginwhile true dobegin writeln('Введите 3 числа'); readln(a, b, c); if (a mod 2) = 0 then // четным плюс 1 a1 := 1; if (b mod 2) = 0 then b1 := 1; if(c mod 2) = 0 then c1 := 1; if((a mod 2) <> 0) and ((b mod 2) <> 0) and ((c mod 2) <> 0) then //При четных нету writeln('четных нет'); if(a1=1)and(b1=0)and(c1=0)then //если только 1 четное writeln(a) else if(a1=0)and(b1=1)and(c1=0)then writeln(b) else if(a1=0)and(b1=0)and(c1=1)then writeln(c); if (a1 = 1) or (b1 = 1) or (c1 = 1) then //Выяснение большего числа begin if(a1 = 1) and (b1 = 1) and (c1 = 1) then // если 3 числа четные begin if (a >= b) and (a >= c) then writeln(a) else if (b >= a) and (b >= c) then writeln(b) else if(c >= b) and (c >= a) then writeln(c) end else if (a1 = 1) and (b1 = 1) then//если а и б четные begin if(a > b) then writeln(a) else if (b > a) then writeln(b) end else if(a1=1)and(c1=1)then//если а и с begin if(a > c) then writeln(a) else if (c > a) then writeln(c) end else if(b1=1)and(c1=1) then//если б и с begin if(b>c)then writeln(b) else if(c>b)then writeln(c) end; end; end;end.
Каждая из компонент связности должна быть кликой (иначе говоря, каждые две вершины в одной компоненте связности должны быть связаны ребром). Если в i-ой компоненте связности вершин, то общее число рёбер будет суммой по всем компонентам связности:
Требуется найти максимум этого выражения (т.е. на самом деле - максимум суммы квадратов) при условии, что сумма всех ni равна N и ni - натуральные числа.
Если K = 1, то всё очевидно - ответ N(N - 1)/2. Пусть K > 1.
Предположим, n1 <= n2 <= ... <= nK - набор чисел, для которых достигается максимум, и n1 > 1. Уменьшим число вершин в первой компоненте связности до 1, а оставшиеся вершины "перекинем" в K-ую компоненту связности. Вычислим, как изменится сумма квадратов: Поскольку по предположению n1 > 1 (тогда и nK > 1), то сумма квадратов увеличится, что противоречит предположению о том, что на выбранном изначально наборе достигается максимум. Значит, максимум достигается, если наименьшая по размеру компонента связности - изолированная вершина. Выкинем эту компоненту связности, останутся K - 1 компонента связности и N - 1 вершина. Будем продолжать так делать, пока не останется одна вершина, тогда получится, что во всех компонентах связности кроме последней должно быть по одной вершине.
Итак, должно выполняться
Подставив в исходную формулу, получаем
Это и есть ответ.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку