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

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

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

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

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

В этой задаче элементы пары не обязаны стоять рядом. Нужно рассмотреть любые два различных элемента последовательности.

Чтобы произведение двух чисел делилось на $14$, в нём одновременно должны присутствовать множители $2$ и $7$.

Разделим числа на группы. В файле получаем:

  • $n_{14}=683$ — делятся на $14$;
  • $n_2=4262$ — делятся на $2$, но не делятся на $7$;
  • $n_7=695$ — делятся на $7$, но не делятся на $2$;
  • остальных чисел: $10000-683-4262-695=4360$.

Всего различных неупорядоченных пар: $\dfrac{10000\cdot9999}{2}=49995000$.

Найдём количество пар, произведение которых кратно $14$, а затем вычтем их из общего количества.

Если хотя бы одно число делится на $14$, произведение пары обязательно делится на $14$. Таких пар:

$683\cdot(10000-683)+\dfrac{683\cdot682}{2}$
$=683\cdot9317+232903$
$=6596414$.

Кроме того, произведение делится на $14$, если одно число делится на $2$, но не на $7$, а второе делится на $7$, но не на $2$.

Таких пар: $4262\cdot695=2962090$.

Значит, количество пар, произведение которых не кратно $14$: $49995000-6596414-2962090=40436496$.

Теперь найдём максимальную сумму подходящей пары.

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

Проверим произведение: $10000\bmod14=4$, $9999\bmod14=3$, поэтому $(10000\cdot9999)\bmod14=12\ne0$.

Следовательно, эта пара подходит.

Её сумма: $10000+9999=19999$.

Код на Python

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

n = len(a)

n14 = sum(x % 14 == 0 for x in a)
n2 = sum(x % 2 == 0 and x % 7 != 0 for x in a)
n7 = sum(x % 7 == 0 and x % 2 != 0 for x in a)

all_pairs = n * (n - 1) // 2

bad1 = n14 * (n - n14) + n14 * (n14 - 1) // 2
bad2 = n2 * n7

count = all_pairs - bad1 - bad2

a0 = sorted(
    [x for x in a if x % 2 != 0 and x % 7 != 0],
    reverse=True
)
a2 = sorted(
    [x for x in a if x % 2 == 0 and x % 7 != 0],
    reverse=True
)
a7 = sorted(
    [x for x in a if x % 7 == 0 and x % 2 != 0],
    reverse=True
)

sums = []

if len(a0) >= 2:
    sums.append(a0[0] + a0[1])

if len(a2) >= 2:
    sums.append(a2[0] + a2[1])

if len(a7) >= 2:
    sums.append(a7[0] + a7[1])

if a0 and a2:
    sums.append(a0[0] + a2[0])

if a0 and a7:
    sums.append(a0[0] + a7[0])

max_sum = max(sums)

print(count, max_sum)

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

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

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