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

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

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

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

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

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

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

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

  • делятся на $10$;
  • делятся на $2$, но не делятся на $5$;
  • делятся на $5$, но не делятся на $2$;
  • не подходят ни под одну из предыдущих групп.

В файле получаем:

  • $980$ чисел, делящихся на $10$;
  • $3965$ чисел, делящихся на $2$, но не на $5$;
  • $1057$ чисел, делящихся на $5$, но не на $2$;
  • $3998$ остальных чисел.

Если хотя бы одно число пары делится на $10$, вторым элементом может быть любое другое число последовательности.

Количество таких пар:

$980\cdot(10000-980)+\dfrac{980\cdot979}{2}$
$=980\cdot9020+479710$
$=8839600+479710$
$=9319310$.

Кроме того, подходят пары, в которых одно число делится на $2$, но не на $5$, а второе делится на $5$, но не на $2$.

Количество таких пар: $3965\cdot1057=4191005$.

Общее количество подходящих пар: $9319310+4191005=13510315$.

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

В последовательности есть число $10000$, которое делится на $10$.

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

Так как один из элементов пары равен $10000$, произведение этой пары обязательно делится на $10$.

Максимальная сумма: $10000+9999=19999$.

Код на Python

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

n = len(a)

n10 = sum(x % 10 == 0 for x in a)
n2 = sum(x % 2 == 0 and x % 5 != 0 for x in a)
n5 = sum(x % 5 == 0 and x % 2 != 0 for x in a)

count = n10 * (n - n10) + n10 * (n10 - 1) // 2 + n2 * n5

a10 = sorted([x for x in a if x % 10 == 0], reverse=True)
a2 = sorted([x for x in a if x % 2 == 0 and x % 5 != 0], reverse=True)
a5 = sorted([x for x in a if x % 5 == 0 and x % 2 != 0], reverse=True)
a0 = sorted([x for x in a if x % 2 != 0 and x % 5 != 0], reverse=True)

sums = []

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

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

if a10 and a5:
    sums.append(a10[0] + a5[0])

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

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

max_sum = max(sums)

print(count, max_sum)

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

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

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