27.06 Макс/мин, кол-во пар, произведение кратно/не кратно
Ошибка.
Попробуйте повторить позже
Имеется набор данных из целых положительных чисел. Рассматриваются все пары различных элементов
последовательности. Необходимо определить количество пар, произведение которых будет кратно
.
В первой строке входных данных задаётся количество чисел
. В каждой из последующих
строк
записано одно целое положительное число, не превышающее
.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла
.
Входные данные | Выходные данные |
6 | 3 |
3 | |
2 | |
9 | |
33 | |
11 | |
6 | |
Переборное решение
f = open("27.txt") n = int(f.readline()) a = [int(x) for x in f] ans = 0 k = 66 for i in range(n): for j in range(i + 1, n): if a[i] * a[j] % k == 0: ans += 1 print(ans)
Статическое решение
f = open("27.txt") n = int(f.readline()) ans = 0 # Счётчик пар для ответа divs = [x for x in range(1, 67) if 66 % x == 0] # Делители числа 66 k = [0] * (66 + 1) # Список, хранящий количество чисел, кратных соответствующему делителю for i in range(n): x = int(f.readline()) maxDiv = 0 # Максимальный делитель, которому кратно число x for d in divs: if x % d == 0: maxDiv = d k[maxDiv] += 1 # Перебор пар делителей for a in range(len(divs)): for b in range(a, len(divs)): # Начинаем с a, чтобы не перебирать одинаковые пары по 2 раза if divs[a] * divs[b] % 66 == 0: if a == b: ans += k[divs[a]] * (k[divs[b]] - 1) // 2 else: ans += k[divs[a]] * k[divs[b]] print(ans)
Динамическое решение
f = open("27.txt") n = int(f.readline()) ans = 0 # Счётчик пар для ответа divs = [x for x in range(1, 67) if 66 % x == 0] # Делители числа 66 k = [0] * (66 + 1) # Список, хранящий количество чисел, кратных соответствующему делителю for i in range(n): x = int(f.readline()) maxDiv = 1 for d in divs: if x * d % 66 == 0: ans += k[d] if x % d == 0: maxDiv = d k[maxDiv] += 1 print(ans)
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

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

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

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

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

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!