Тема . (старое) 27. Программирование

.06 Макс/мин, кол-во пар, произведение кратно/не кратно

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела (старое) 27. программирование
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#37438

В файле 7.txt имеется последовательность натуральных чисел. Найдите количество пар элементов последовательности, произведение которых кратно 71 и равно произведению элементов какой-либо другой пары (в которой отличается индекс хотя бы одного из элементов, образующих пару).

Под парой в данной задаче подразумевается два различных элемента последовательности.

В первой строке файла содержится число N (10 ≤ N ≤ 100  ), каждая из следующих N строк файла содержит одно натуральное число, не превышающее 10000.

Пример входного файла:

6

2

5

4

2

4

71

Для указанных входных данных ответом является число 4.

Пояснение: В этом наборе можно выбрать две пары (71 и 2), и две пары (71 и 4). Пара (71 и 5) не подходит, потому что нет другой пары, произведение элементов которой равно 71*5. Ответ: 4.

Вложения к задаче
Показать ответ и решение

Решение программой

Для решения задачи сначала нужно перебрать все пары чисел из последовательности и запомнить их произведения. Затем среди них ищем такие пары, у которых произведение кратно 71 и у этого произведения есть хотя бы один “дубликат” — то есть такое же значение произведения, но от другой пары (где индексы хотя бы одного числа другие). Под «парой» подразумеваются два разных элемента последовательности.

Программа сначала читает данные и сохраняет все возможные произведения пар чисел в список p. Далее повторно перебираются все пары и проверяется: кратно ли их произведение 71 и встречается ли оно в списке хотя бы дважды (то есть, есть ли совпадение с другой парой). Если да, счётчик увеличивается.

# Открываем файл и считываем количество чисел
f = open("7.txt")
n = int(f.readline())

# Считываем сами числа
a = [int(i) for i in f]
# Счётчик подходящих пар
count = 0
# Массив для хранения всех произведений пар
p = []

# Сначала собираем все возможные произведения пар i < j
for i in range(n):
    for j in range(i + 1, n):
        p.append(a[i] * a[j])

# Снова перебираем все пары
for i in range(n):
    for j in range(i + 1, n):
        # Условие: произведение кратно 71 и встречается в списке хотя бы дважды
        if (a[i] * a[j]) % 71 == 0 and p.count(a[i] * a[j]) > 1:
            count += 1

print(count)

Ответ: 8

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!