Берем третьи байты и переводим в двоичную систему счисления:добавим в начале нулей, чтобы получилось 8 цифр. ← ← найдем маску. запишем с столбик. если элементы одинаковые, ставим соответствующее число, если элементы разные, ставим крестик: 00000101 00011101 000xx101 ← маска т.к. по правилу в маске, сначала идут единицы, переместим их в начало: 11xx0000 если бы по условию, надо было бы найти наименьшее возможное значение, то мы бы заменяли крестики(х) на нули. т.к. по условию необходимо наибольшее возможное значение, подставляем вместо крестиков(x), единицу и переведем в десятичную систему счисления:
Пусть в "долях" 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