Ответ: Пары с произведением, кратным 38
Алгоритм работает за $O(N)$ по времени и использует $O(1)$ дополнительной памяти; приведённая программа на Python 3 корректно подсчитывает количество пар с произведением, кратным $38$.
У этого задания официального ключа нет, поэтому ответ получен в разборе и с ключом не сверен. Перед тем как заучивать результат, пройдите выкладки — там видно, откуда взялось каждое число.
На вход программы поступает последовательность из $N$ целых положительных чисел, все числа в последовательности различны. Рассматриваются все пары различных элементов последовательности: элементы пары не обязаны стоять рядом, порядок элементов в паре не важен. Необходимо определить количество пар, для которых произведение элементов делится на $38$.
В первой строке входных данных задаётся количество чисел $N$ ($1 \le N \le 1000$). В каждой из последующих $N$ строк записано одно целое положительное число, не превышающее $10\,000$.
В качестве результата программа должна напечатать одно число — количество пар, в которых произведение элементов кратно $38$.
Пример входных данных:
$4$
$2$
$6$
$19$
$57$
Пример выходных данных:
$4$
Из четырёх заданных чисел можно составить $6$ попарных произведений: $2\cdot6$, $2\cdot19$, $2\cdot57$, $6\cdot19$, $6\cdot57$, $19\cdot57$. На $38$ делятся произведения $2\cdot19$, $2\cdot57$, $6\cdot19$, $6\cdot57$.
Требуется написать эффективную по времени и по памяти программу. Программа считается эффективной по времени, если при увеличении количества исходных чисел $N$ в $k$ раз время её работы увеличивается не более чем в $k$ раз. Программа считается эффективной по памяти, если память для хранения всех переменных не превышает $1$ килобайта и не увеличивается с ростом $N$.
Перед текстом программы необходимо кратко описать алгоритм решения, указать использованный язык программирования и его версию.
Где здесь ошибаются
Перебирать все пары, получая сложность $O(N^2)$.
Считать достаточным наличие делимости одного из чисел на $38$, не учитывая пары чисел, одно из которых кратно $2$, а другое — $19$.
Обновлять счётчики до подсчёта пар, из-за чего число может образовать пару само с собой.
Хранить всю последовательность, нарушая требование постоянного объёма памяти.
Не учитывать числа, кратные одновременно $2$ и $19$.