// pascalabc.net 3.3, сборка 1579 от 18.11.2017 // внимание! если программа не работает, обновите версию! begin writeln('*** исходный массив ***'); var a: =matrrandom(2,4,-10,30); a.println(4); writeln(4*a.colcount*'-'); writeln('п = ',a.elementsbyrow.where(t-> t.between(1,19)) .aggregate(1,(x,y)-> x*y)) end. пример *** исходный массив *** 24 16 22 12 2 5 1 8 п = 15360
barinovmisha2013
17.06.2020
Берем третьи байты и переводим в двоичную систему счисления:добавим в начале нулей, чтобы получилось 8 цифр. ← ← найдем маску. запишем с столбик. если элементы одинаковые, ставим соответствующее число, если элементы разные, ставим крестик: 00000101 00011101 000xx101 ← маска т.к. по правилу в маске, сначала идут единицы, переместим их в начало: 11xx0000 если бы по условию, надо было бы найти наименьшее возможное значение, то мы бы заменяли крестики(х) на нули. т.к. по условию необходимо наибольшее возможное значение, подставляем вместо крестиков(x), единицу и переведем в десятичную систему счисления: