Подготовка к школе
1 класс
2 класс
3 класс
4 класс
5 класс
6 класс
7 класс
8 класс
9 класс
10 класс
11 класс
ОГЭ
ЕГЭ
Для всех
Назад

17. Числовые последовательности: #297027

Сообщить о проблеме
Задание #297027
Задание было решено верно
Задание было решено неверно

В файле содержится последовательность из $10,000$ целых положительных чисел. Каждое число не превышает $10,000$.

Определите и запишите в ответе сначала количество пар элементов последовательности, у которых сумма нечётна, а произведение делится на $3$, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два различных элемента последовательности. Порядок элементов в паре не важен.

Так как сумма двух чисел должна быть нечётной, одно число пары должно быть чётным, а другое — нечётным.

Кроме того, произведение должно делиться на $3$. Значит, хотя бы один из элементов пары должен делиться на $3$.

Разделим числа последовательности на четыре группы:

  • чётные и делящиеся на $3$ — $1666$ чисел;
  • чётные и не делящиеся на $3$ — $3377$ чисел;
  • нечётные и делящиеся на $3$ — $1680$ чисел;
  • нечётные и не делящиеся на $3$ — $3277$ чисел.

Всего нечётных чисел: $1680+3277=4957$.

Подходящие пары можно посчитать двумя непересекающимися случаями.

Если чётное число делится на $3$, то нечётное число может быть любым: $1666\cdot4957=8258362$.

Если чётное число не делится на $3$, то нечётное число обязательно должно делиться на $3$: $3377\cdot1680=5673360$.

Общее количество подходящих пар:

$8258362+5673360=13931722$.

Теперь найдём максимальную сумму.

В последовательности есть число $10000$.

Также в последовательности есть число $9993$.

Число $10000$ чётное, а $9993$ нечётное, поэтому их сумма нечётна: $10000+9993=19993$.

Кроме того, $9993\bmod3=0$, следовательно, произведение этой пары делится на $3$.

Значит, максимальная сумма подходящей пары равна $19993$.

Код на Python

a = [int(x) for x in open('17-29.txt')]

even_3 = [x for x in a if x % 2 == 0 and x % 3 == 0]
even_not_3 = [x for x in a if x % 2 == 0 and x % 3 != 0]
odd_3 = [x for x in a if x % 2 != 0 and x % 3 == 0]
odd_not_3 = [x for x in a if x % 2 != 0 and x % 3 != 0]

count = (
    len(even_3) * (len(odd_3) + len(odd_not_3))
    + len(even_not_3) * len(odd_3)
)

max_sum = max(
    max(even_3) + max(odd_3 + odd_not_3),
    max(even_not_3) + max(odd_3)
)

print(count, max_sum)

Программа выводит:

13931722 19993
Показать
Очки опыта 20
Спросить Зави
0 заданий сегодня

Предложить улучшение