Python

Программирование на питоне

Пожалуйста, срочно помогите решить задачи! Заранее спасибо)

Задача №1
Написать функцию
На входе функция получает два массива.
На выхода должен быть массив, произведений четных чисел из первого массива и нечетных чисел из второго массива.
Массивы могут иметь разную длинну.
Например:
[2, 5, 8, 9, 4 ,9, 8]
[1, 5, 8, 9, 11, 3, 0, 44, 5]
вычисление:
2*1, 8*5, 4*11, 8*3
ожидаемый результат:
[2, 40, 44, 24]

Задача №2
Написать функцию.
На входе функция получает массив и заданное число.
На выходе вывести количество подряд идущ два числа, которые в сумме равны заданному числу.
Пример:
[2,9,5,6,11,34,3,9,12], 11
вычисление:
2,9; 5,6; 3,9; = итого 3 пары
Ожидаемый результат:
3
Спасибо огромное, если вы написали этот код - то спасли меня
Ожидаемый результат в первой задаче не соответствует её условию: последние два произведения должны быть 4*9 и 8*11, соответственно.
Первый вариант решения:
 def crossmult(a, b):
return (x * y for x, y in zip((n for n in a if n % 2 == 0), (n for n in b if n % 2 != 0)))
Второй вариант решения:
 from math import prod; from itertools import filterfalse
def crossmult(a, b):
return map(prod, zip(filterfalse((2).__rmod__, a), filter((2).__rmod__, b)))
Код для тестирования:
 a, b = ([int(s) for s in input().split()] for _ in (0, 0))
print(*crossmult(a, b))
Входные данные (массивы из условия, по одному массиву на строке через пробел):
 2 5 8 9 4 9 8
1 5 8 9 11 3 0 44 5
Выходные данные:
 2 40 36 88 

И во второй задаче ошибка в тестовых данных: 3 + 9 не равно 11, поэтому там только две пары, а не три.
Первый вариант решения:
 from itertools import pairwise
def countpairs(ns, z):
return sum(1 for x, y in pairwise(ns) if x + y == z)
Второй вариант решения:
 from itertools import pairwise
def countpairs(ns, z):
return sum(map(z.__eq__, map(sum, pairwise(ns))))
Код для тестирования:
 ns = (int(s) for s in input().split())
z = int(input())
print(countpairs(ns, z))
Входные данные (массив и число из условия):
 2 9 5 6 11 34 3 9 12
11
Выходные данные:
 2 
ВК
Виталя Кривичанин
87 571
Лучший ответ