Задача Разработать метод, который получает исходный массив и дополнительный массив разрешенных значений. Необходимо определить количество и сумму элементов исходного массива, имеющих разрешенные значения.
Параметры входные: исходный массив и дополнительный массив разрешенных значений.
Параметры результативные: сумму и количество элементов массива, удовлетворяющих заданному условию.
Python 3:
from random import randint
C = [randint(-100, 100) for _ in range(20)]
print(*C)
print(sum(filter(lambda el: el < 0, C)))
Аналог в PascalABC.NET:
begin
var C := ArrRandomInteger(20, -100, 100);
C.Println;
C.Where(x -> x < 0).Sum.Print;
end.
Паскаль, в "старом" стиле:
var
C: array[1..20] of integer;
i, s: integer;
begin
randomize();
s := 0;
for i := 1 to 20 do
begin
C[i] := random(201) - 100;
write(C[i], ' ');
if C[i] < 0 then
s := s + C[i];
end;
writeln();
write(s)
end.
21222
Объяснение:
Как обычно, идём с конца.
58 - не квадрат, поэтому последняя операция могла быть только вычитание 2. Значит, до этого было 60.
60 - не квадрат, поэтому следующая операция могла быть только вычитание 2. Значит, до этого было 62.
62 - не квадрат, поэтому следующая операция могла быть только вычитание 2. Значит, до этого было 64.
64 - квадрат. Учитывая, что нам нужно получить 10, если бы тут тоже было вычитание 2, то и на следующем шаге была бы такая же операция, и к пятому шагу у нас было бы 68, а не 10. Поэтому тут было возведение в квадрат, до этого было 8
8 - не квадрат, поэтому следующая операция могла быть только вычитание 2. Значит, до этого было 10 (ура!).
Теперь в обычном порядке:
Меняем все операции "-2" на 2, а "" на 1 и получаем 21222