06 Макс/мин, кол-во пар, произведение кратно/не кратно
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Дана последовательность из целых положительных чисел. Необходимо определить максимальное произведение пары
элементов этой последовательности, произведение которой кратно
.
В первой строке входных данных задаётся количество чисел N (1 N
10000). В каждой из последующих N строк
записано одно целое положительное число, не превышающее 10 000.
В ответе укажите искомое произведение сначала для файла A, затем, через пробел, для файла B.
Решение 1 (неэффективное)
f = open("27A.txt") n = int(f.readline()) a = [int(f.readline()) for x in range(n)] ans = 0 for i in range(n): for j in range(i + 1, n): if (a[i] * a[j]) % 6 == 0: ans = max(ans, a[i] * a[j]) print(ans)
Решение 2 (эффективное)
f = open(’2.txt’) n = int(f.readline()) mx = 0 mx2 = 0 mx3 = 0 mx6 = 0 # пары (1, 6), (2, 6), (3, 6), (6, 6), (2, 3) ans = 0 for i in range(n): x = int(f.readline()) if x % 6 == 0: ans = max(mx6 * x, mx3 * x, mx2 * x, mx * x, ans) mx6 = max(mx6, x) elif x % 3 == 0: ans = max(mx6 * x, mx2 * x, ans) mx3 = max(mx3, x) elif x % 2 == 0: ans = max(mx6 * x, mx3 * x, ans) mx2 = max(mx2, x) else: ans = max(mx6 * x, ans) mx = max(mx, x) print(ans)
Решение 3 (эффективное)
f = open(’2.txt’) n = int(f.readline()) a = [0] * 7 ans = 0 for i in range(n): # следующие циклы можно обернуть в генераторы x = int(f.readline()) for j in range(1, 7): if x * j % 6 == 0: # идея как в первом решении, но используем цикл ans = max(ans, x * a[j]) for j in range(6, 0, - 1): if x % j == 0 and 6 % j == 0: a[j] = max(a[j], x) break print(ans)
Ошибка.
Попробуйте повторить позже
Имеется набор данных из целых чисел. Рассматриваются все пары различных элементов последовательности.
Необходимо определить минимальное произведение среди пар элементов, которое будет кратно
.
В первой строке входных данных задаётся количество чисел
. В каждой из последующих
строк
записано одно целое положительное число, не превышающее
.
Пример входных данных:
5
3
4
10
26
17
Выходные данные для приведённого выше примера:
В ответе укажите два числа: сначала значение искомого количества для файла , затем для файла
.
Решение 1 (неэффективное)
f = open("27A.txt") n = int(f.readline()) a = [int(f.readline()) for x in range(n)] ans = 10000000000 for i in range(n): for j in range(i + 1, n): if (a[i] * a[j]) % 15 == 0: ans = min(ans, a[i] * a[j]) print(ans)
Решение 2 (эффективное)
n = int(input()) kr_15 = [100000000, 100000000] kr_5, kr_3, nekr = 100000000, 100000000, 100000000 for i in range(n): x = int(input()) if x % 15 == 0: kr_15 += [x] elif x % 5 == 0: kr_5 = min(kr_5, x) elif x % 3 == 0: kr_3 = min(kr_3, x) else: nekr = min(nekr, x) kr_15 = sorted(kr_15)[:2] print(min(kr_15[0]*kr_15[1], kr_15[0]*kr_5, \ kr_15[0]*kr_3, kr_15[0]*nekr,\ kr_5*kr_3))
Ошибка.
Попробуйте повторить позже
Имеется набор данных из целых чисел. Рассматриваются все пары различных элементов последовательности.
Необходимо определить количество пар, произведение которых не будет кратно
.
В первой строке входных данных задаётся количество чисел
. В каждой из последующих
строк
записано одно целое положительное число, не превышающее
.
Пример входных данных:
Выходные данные для приведённого выше примера:
В ответе укажите два числа: сначала значение искомого количества для файла , затем для файла
.
Решение 1 (неэффективное)
f = open("27A.txt") n = int(f.readline()) a = [int(f.readline()) for x in range(n)] ans = 0 for i in range(n): for j in range(i + 1, n): if (a[i] * a[j]) % 144 != 0: ans += 1 print(ans)
Решение 2 (эффективное)
def dels(x): ans = [] for i in range(1, x+1): if x % i == 0: ans += [i] return ans a = dels(144)[::-1] mask = [0]*145 n = int(input()) for i in range(n): x = int(input()) for j in a: if x % j == 0: mask[j] += 1 break ans = 0 for i in range(len(a)): for j in range(i+1, len(a)): if a[i]*a[j] % 144 != 0: ans += mask[a[i]]*mask[a[j]] for i in range(len(a)): if a[i]**2 % 144 != 0: ans += mask[a[i]]*(mask[a[i]]-1) // 2 print(ans)
Ошибка.
Попробуйте повторить позже
Имеется набор данных из N целых чисел. Рассматриваются все пары различных элементов последовательности.
Необходимо определить количество таких пар, произведение которых кратно .
В первой строке входных данных задаётся количество чисел N (1 N
10000). В каждой из последующих N строк
записано одно целое положительное число, не превышающее 10 000.
Пример входных данных:
5
2
22
1
17
10
Выходные данные для приведённого выше примера: 3
В ответе укажите два числа: сначала значение искомого количества для файла А, затем для файла B.
Решение №1.
f = open(’1.txt’) n = int(f.readline()) a = [0] * 35 # для удобства используем массив на 35 элементов # будем использовать только ячейки 1, 2, 17, 34 # пары (1, 34), (2, 34), (17, 34), (34, 34), (2, 17) ans = 0 for i in range(n): x = int(f.readline()) if x % 34 == 0: ans += a[34] + a[17] + a[2] + a[1] a[34] += 1 elif x % 17 == 0: ans += a[34] + a[2] a[17] += 1 elif x % 2 == 0: ans += a[34] + a[17] a[2] += 1 else: ans += a[34] a[1] += 1 print(ans)
Решение №2.
f = open(’1.txt’) n = int(f.readline()) a = [0] * 35 ans = 0 for i in range(n): # следующие циклы можно обернуть в генераторы x = int(f.readline()) for j in range(1, 35): if x * j % 34 == 0: # идея как в первом решении, но используем цикл ans += a[j] for j in range(34, 0, - 1): if x % j == 0 and 34 % j == 0: a[j] += 1 break print(ans)
Ошибка.
Попробуйте повторить позже
Имеется набор данных из N целых чисел. Рассматриваются все пары различных элементов последовательности. Необходимо определить минимальное произведение среди пар элементов, которое будет кратно 15.
В первой строке входных данных задаётся количество чисел N (1 N
10000). В каждой из последующих N строк
записано одно целое положительное число, не превышающее 10 000.
Пример входных данных:
5
3
4
10
26
17
Выходные данные для приведённого выше примера: 30
В ответе укажите два числа через пробел: сначала значение искомого количества для файла А, затем для файла B.
n = int(input()) kr_15 = [100000000, 100000000] kr_5, kr_3, nekr = 100000000, 100000000, 100000000 for i in range(n): x = int(input()) if x % 15 == 0: kr_15 += [x] # добавляем новый элемент к массиву elif x % 5 == 0: kr_5 = min(kr_5, x) elif x % 3 == 0: kr_3 = min(kr_3, x) else: nekr = min(nekr, x) kr_15 = sorted(kr_15) # нам нужно два минимальных кратных 15 print(min(kr_15[0]*kr_15[1], kr_15[0]*kr_5, \ kr_15[0]*kr_3, kr_15[0]*nekr,\ kr_5*kr_3))
Ошибка.
Попробуйте повторить позже
Имеется набор данных из целых чисел. Рассматриваются все пары различных элементов последовательности.
Необходимо определить количество таких пар, произведение которых будет кратно
.
В первой строке входных данных задаётся количество чисел
. В каждой из последующих
строк записано одно целое положительное число, не превышающее
.
Пример входных данных:
5
13
22
1
13
10
Выходные данные для приведённого выше примера: 7
В ответе укажите через пробел два числа: сначала значение искомого количества для файла А, затем для файла B.
f = open("fileA.txt") n = int(f.readline()) a = [int(x) for x in f.readlines()] kr13 = 0 nekr13 = 0 for i in range(n): if a[i] % 13 == 0: kr13 += 1 else: nekr13 += 1 ans = kr13 * nekr13 + kr13 * (kr13 - 1) // 2 print(ans) f.close()
Ошибка.
Попробуйте повторить позже
Имеется набор данных из целых чисел. Рассматриваются все пары различных элементов последовательности.
Необходимо определить количество таких пар, произведение которых будет кратно
.
В первой строке входных данных задаётся количество чисел
. В каждой из последующих
строк записано одно целое положительное число, не превышающее
.
Пример входных данных:
5
11
22
1
7
68
Выходные данные для приведённого выше примера: 5
В ответе укажите через пробел два числа: сначала значение искомого количества для файла А, затем для файла B.
f = open("fileA.txt") n = int(f.readline()) a = [int(x) for x in f.readlines()] kr2 = 0 kr11 = 0 kr22 = 0 for i in range(n): if a[i] % 22 == 0: kr22 += 1 elif a[i] % 11 == 0: kr11 += 1 elif a[i] % 2 == 0: kr2 += 1 ans = kr22 * (n - kr22) + kr11 * kr2 + kr22 * (kr22 - 1) // 2 print(ans) f.close()
Ошибка.
Попробуйте повторить позже
В файле 7.txt имеется последовательность натуральных чисел. Найдите количество пар элементов последовательности, произведение которых кратно 71 и равно произведению элементов какой-либо другой пары (в которой отличается индекс хотя бы одного из элементов, образующих пару).
Под парой в данной задаче подразумевается два различных элемента последовательности.
В первой строке файла содержится число N (), каждая из следующих 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)
Ошибка.
Попробуйте повторить позже
В текстовом файле записан набор натуральных чисел, не превышающих . Гарантируется, что все числа различны. Из
набора нужно выбрать три числа, произведение которых делится на
. Сколько троек, подходящих под условие задачи
можно найти?
Первая строка входного файла содержит натуральное число — общее количество чисел в файле. Каждая из
следующих
строк содержит одно число.
Пример входного файла:
Для данного примера в ответе нужно записать (подходят следующие тройки (
), (
),
(
)).
Вам даны два входных файла, каждый из которых имеет описанную выше структуру. В ответе укажите два числа,
ответ для файла и для файла
.
Решение 1. Неэффективное
f = open("27-A.txt") n = int(f.readline()) a = [] for i in range(n): a.append(int(f.readline())) k = 0 for i in range(n): for j in range(i + 1, n): for l in range(j + 1, n): if (a[i] * a[j] * a[l]) % 5 == 0: k += 1 print(k)
Решение 2. Эффективное. Динамика
f = open("27-A.txt") n = int(f.readline()) numbers = [0] * 6 pairs = [0] * 6 ans = 0 for i in range(n): x = int(f.readline()) for j in range(1, 6): if 5 % j == 0: if x * j % 5 == 0: ans += pairs[j] for j in range(5, 0, -1): for k in range(5, 0, -1): if x * j % k == 0 and 5 % j == 0 and 5 % k == 0: pairs[k] += numbers[j] break for j in range(5, 0, -1): if x % j == 0 and 5 % j == 0: numbers[j] += 1 break print(ans)
Решение 3. Эффективное. Статика
f = open("27-B.txt") n = int(f.readline()) kr5 = 0 for i in range(n): x = int(f.readline()) kr5 += (x % 5 == 0) nekr = n - kr5 ans = (kr5 * nekr * (nekr - 1) // 2 + nekr * kr5 * (kr5 - 1) // 2 + kr5 * (kr5 - 1) * (kr5 - 2) // 6) print(ans)
Ошибка.
Попробуйте повторить позже
В текстовом файле записан набор натуральных чисел, не превышающих . Гарантируется, что все числа различны. Из
набора нужно выбрать три числа, произведение которых делится на
. Сколько троек, подходящих под условие задачи
можно найти?
Первая строка входного файла содержит натуральное число — общее количество чисел в файле. Каждая из
следующих
строк содержит одно число.
Пример входного файла:
Для данного примера в ответе нужно записать (подходят следующие тройки (
), (
),
(
)).
Вам даны два входных файла, каждый из которых имеет описанную выше структуру. В ответе укажите два числа,
ответ для файла и для файла
.
Решение 1. Неэффективное
f = open("27-A.txt") n = int(f.readline()) a = [] for i in range(n): a.append(int(f.readline())) k = 0 for i in range(n): for j in range(i + 1, n): for l in range(j + 1, n): if (a[i] * a[j] * a[l]) % 8 == 0: k += 1 print(k)
Решение 2. Эффективное. Динамика
f = open("27-B.txt") n = int(f.readline()) numbers = [0] * 9 pairs = [0] * 9 ans = 0 for i in range(n): x = int(f.readline()) for j in range(1, 9): if 8 % j == 0: if x * j % 8 == 0: ans += pairs[j] for j in range(8, 0, -1): for k in range(8, 0, -1): if x * j % k == 0 and 8 % j == 0 and 8 % k == 0: pairs[k] += numbers[j] break for j in range(8, 0, -1): if x % j == 0 and 8 % j == 0: numbers[j] += 1 break print(ans)
Ошибка.
Попробуйте повторить позже
Имеется набор данных из целых чисел. Рассматриваются все пары различных элементов последовательности.
Необходимо определить количество пар, произведение которых не будет кратно
.
В первой строке входных данных задаётся количество чисел
. В каждой из последующих
строк записано одно целое положительное число, не превышающее
.
Пример входных данных:
Выходные данные для приведённого выше примера:
В ответе укажите два числа: сначала значение искомого количества для файла , затем для файла
.
f = open(’27B.txt’) n = int(f.readline()) ans = 0 kr = [0]*9 for i in range(n): x = int(f.readline()) for j in [8, 4, 2, 1]: if x * j % 8 != 0: ans += kr[j] for j in [8, 4, 2, 1]: if x % j == 0: kr[j] += 1 break print(ans)
Ошибка.
Попробуйте повторить позже
Имеется набор данных из целых чисел. Рассматриваются все пары различных элементов последовательности.
Необходимо определить количество пар, произведение которых не будет кратно
.
В первой строке входных данных задаётся количество чисел
. В каждой из последующих
строк записано одно целое положительное число, не превышающее
.
Пример входных данных:
Выходные данные для приведённого выше примера:
В ответе укажите два числа: сначала значение искомого количества для файла , затем для файла
.
f = open(’27B.txt’) n = int(f.readline()) ans = 0 kr = [0]*31 for i in range(n): x = int(f.readline()) for j in [30, 15, 10, 6, 5, 3, 2, 1]: if x * j % 30 != 0: ans += kr[j] for j in [30, 15, 10, 6, 5, 3, 2, 1]: if x % j == 0: kr[j] += 1 break print(ans)
Ошибка.
Попробуйте повторить позже
Дано число затем
натуральных чисел. Найти количество троек чисел, где элементы будут представлять собой
строго возрастающую геометрическую прогрессию. Знаменатель геометрической прогрессии – натуральное число большее
.
Входные данные
В первой строке подается натуральное число . В каждой строке после записано одно натуральное
число, не превышающее
.
В ответе укажите одно число: значение для файла А.
Файл Б для тех, кто уверен в своих силах. Ответ для него: 75392942
n = int(input()) mask = [0] * 10001 for i in range(n): mask[int(input())] += 1 ans = 0 for i in range(2, 101): for j in range(1, 10000 + 1): if j * i * i > 10000: break if mask[j] * mask[j * i] * mask[j * i * i] > 0: ans += mask[j] * mask[j * i] * mask[j * i * i] print(ans)
Ошибка.
Попробуйте повторить позже
Определите число, которое является произведением двух элементов последовательности (элементы с различными номерами), а также наибольшим кратным 34. Гарантируется, что хотя бы одно такое произведение в последовательности есть.
Пример входного файла:
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество чисел N
. В каждой из последующих N строк записано одно натуральное число, не превышающее
1000.
7
124
1000
3
170
167
954
256
Пример выходных данных для приведённого выше примера входных данных: 170000
В ответе укажите два числа через пробел: сначала значение искомого произведения для файла А, затем для файла B.
27A: f = open(’C:/27_A.txt’) n = int(f.readline()) a = [int(i) for i in f] mx = 0 for i in range(n): for j in range(i+1, n): if a[i]*a[j] % 34 == 0: mx = max(mx, a[i]*a[j]) print(mx) 27B: f = open(’C:/27_B.txt’) n = int(f.readline()) a = [int(i) for i in f] mx = max(a) mx2 = max(i for i in a if i % 2 == 0) mx17 = max(i for i in a if i % 17 == 0) mx34 = max(i for i in a if i % 34 == 0) mxp = 0 if mx != mx34 or a.count(mx) > 1: if mx*mx34 % 34 == 0: mxp = max(mxp, mx*mx34) if mx2 != mx17 or a.count(mx) > 1: if mx2*mx17 % 34 == 0: mxp = max(mxp, mx2*mx17) if mx2 != mx34 or a.count(mx) > 1: if mx2*mx34 % 34 == 0: mxp = max(mxp, mx2*mx34) print(mxp)
Ошибка.
Попробуйте повторить позже
По каналу связи передавались данные в виде последовательности положительных целых чисел. Количество чисел заранее неизвестно, но не менее двух, признаком конца данных считается число 0. Контрольное значение равно такому максимально возможному произведению двух чисел из переданного набора, которое делится на 7, но не делится на 49. Если такое произведение получить нельзя, контрольное значение считается равным 1.
Программа должна напечатать одно число — вычисленное контрольное значение, соответствующую условиям задачи.
Даны два входных файла (файл A и файл B), каждый из которых содержит N строк. В каждой
из N строк записано одно натуральное число, не превышающее 1000. Пример организации исходных данных во входном
файле:
6
7
8
9
0 Пример выходных данных для приведённого выше примера входных данных: 63
В ответе укажите два числа через пробел: сначала значение искомого произведения для файла A, затем для файла B.
Решение 27А:
# Открываем файл с именем ’27_A__1va5i.txt’ with open(’27_A__1va5i.txt’) as f: # Читаем каждую строку файла и преобразуем ее в целое число, # добавляя результат в список ’data’ data = [int(x) for x in f] # Изначально устанавливаем максимальное произведение равным 1 max_product = 1 # Проходим через каждый элемент в списке ’data’ (кроме последнего) for i in range(len(data) - 1): # Сравниваем элемент ’data[i]’ со всеми последующими элементами в списке for j in range(i + 1, len(data)): # Вычисляем произведение двух чисел p = data[i] * data[j] # Проверяем, что произведение делится на 7 (остаток от деления на 49 равен одному из чисел [7, 14, 21, 28, 35, 42]), # но не на 49 (то есть не равно ни одному из чисел [7, 14, 21, 28, 35, 42] при делении на 49) if p % 49 in [7, 14, 21, 28, 35, 42]: # Если это так, обновляем максимальное произведение max_product = max(max_product, p) # Выводим максимальное произведение на экран print(max_product)
Решение 27B:
Решение в статике:
f = open(’8prob/27B.txt’) a = [int(i) for i in f] # Считали все числа # Если произведение двух чисел делится на 7, но не делится на 49, это значит, что ровно одно из чисел делится на 7 # Соответственно, будем искать максимальное число, кратное 7, и максимальное число, не кратное 7, # это и будет искомым контрольным значением m7 = 0 # Максимальное число, кратное 7 m = 0 # Максимальное число, не кратное 7 for x in a: # Перебираем все числа из последовательности # Ищем m7 и m if x % 7 == 0 and x % 49 != 0: m7 = max(m7, x) if x % 7 != 0 and x % 49 != 0: m = max(m, x) print(m * m7)
Решение в динамике:
# Имя входного файла input_file = ’27_B__1va5j.txt’ # Инициализируем максимальное произведение как 0 max_product = 0 # Константа, связанная с модульной арифметикой modulus = 7 * 49 # Инициализация списка для хранения максимальных значений по модулю max_mod_values = [0] * modulus # Открываем файл для чтения данных with open(input_file) as file: # Проходим по всем строкам в файле for line in file: # Преобразуем строку в число number = int(line) # Проверяем все возможные модули for mod_value in range(modulus): # Проверяем условие: mod_value - индекс, умножаемый на текущее число if (number * mod_value) % 7 == 0 and (number * mod_value) % 49 != 0: # Если произведение больше текущего максимального произведения, обновляем его if number * max_mod_values[mod_value] > max_product: max_product = max(max_product, number * max_mod_values[mod_value]) # Обновляем максимальное значение для данного остатка max_mod_values[number % modulus] = max(number, max_mod_values[number % modulus]) # Выводим максимальное произведение print(max_product)
Ошибка.
Попробуйте повторить позже
Последовательность натуральных чисел характеризуется числом M — наибольшим числом, кратным 7 и являющимся произведением двух элементов последовательности с различными номерами. Гарантируется, что хотя бы одно такое произведение в последовательности есть.
Входные данные: Дан входной файл, который содержит в первой строке количество чисел N (1 N
100000). В каждой из последующих N строк записано одно натуральное число, не превышающее
1000.
Пример организации исходных данных во входном файле:
5
49
295
797
482
96
Пример выходных данных для приведённого выше примера входных данных: 39053
В ответе укажите два числа: значение для файла А, затем, через пробел, для файла Б. Так же можно указать ответ ТОЛЬКО для файла А.
Для А
s = open(’27-7a.txt’, ’r’).readlines()[1:] arr = [] for i in range(len(s)): arr.append(int(s[i])) n = len(arr) mx = -1 for i in range(n - 1): for j in range(i + 1, n): if (arr[i]*arr[j]) % 7 == 0: mx = max(mx, arr[i]*arr[j]) print(mx)
Для Б
s = open(’27-7b.txt’, ’r’).readlines()[1:] arr = [] for i in range(len(s)): arr.append(int(s[i])) n = len(arr) mx_kr7, m2_kr7, mx = 0, 0, 0 for i in range(n): a = arr[i] if a % 7 == 0 and a > mx_kr7: m2_kr7 = mx_kr7 mx_kr7 = a elif a % 7 == 0 and a > m2_kr7: m2_kr7 = a elif a > mx: mx = a res = max(mx_kr7*m2_kr7, mx_kr7*mx) print(res)
- 863660
- 863660 994000
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из N целых положительных чисел, необходимо определить количество пар двух элементов последовательности с различными номерами, произведение которых даёт число кратное 18.
Входные данные: Дан входной файл, который содержит в первой строке количество чисел N (1 N
100000). В каждой из последующих N строк записано одно натуральное число, не превышающее
1000.
Пример организации исходных данных во входном файле:
4
2
8
9
27
Пример выходных данных для приведённого выше примера входных данных: 4 (это пары: 2,9; 2,27; 8,9; 8,27)
В ответе укажите два числа через пробел: сначала значение для файла А, затем для файла B.
Для А
s = open(’27-8a.txt’, ’r’).readlines()[1:] arr = [] for i in range(len(s)): arr.append(int(s[i])) n = len(arr) cnt = 0 for i in range(n - 1): for j in range(i + 1, n): if (arr[i]*arr[j]) % 18 == 0: cnt += 1 print(cnt)
Для Б статика
f = open(’1.txt’) n = int(f.readline()) ans = 0 k18 = 0 k9 = 0 k6 = 0 k3 = 0 k2 = 0 nk = 0 for i in range(n): x = int(f.readline()) if x % 18 == 0: ans += (k18 + nk + k9 + k6 + k3 + k2) k18 += 1 elif x % 9 == 0: ans += (k18 + k2 + k6) k9 += 1 elif x % 6 == 0: ans += (k18 + k3 + k9 + k6) k6 += 1 elif x % 3 == 0: ans += (k18 + k6) k3 += 1 elif x % 2 == 0: ans += (k18 + k9) k2 += 1 else: ans += k18 nk += 1 print(ans)
Для Б динаминка
with open(’27-8b.txt’) as f: n = int(f.readline()) count = 0 D = 18 # наш делитель k = [0]*D#массив,в котором каждый элемент- это количество чисел с определенном остатком от D for i in range(n): x = int(f.readline()) for d in range(D):# проходимся по нашим остаткам if (x*d) % 18 == 0: count += k[d]#прибавляем к счетчику значение в списке k под индексом остатка k[x % D] += 1# увеличиваем определенное значение в списке,в зависимости от того,чему равен остаток x от D print(count)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из N целых положительных чисел, необходимо определить количество пар двух элементов последовательности с различными номерами, произведение которых даёт число кратное 22.
Входные данные: Дан входной файл, который содержит в первой строке количество чисел N (1 N
100000). В каждой из последующих N строк записано одно натуральное число, не превышающее
1000.
В ответе укажите два числа через пробел: сначала значение для файла А, затем для файла B.
Для А
s = open(’27-14a.txt’, ’r’).readlines()[1:] arr = [] for i in range(len(s)): arr.append(int(s[i])) n = len(arr) cnt = 0 for i in range(n - 1): for j in range(i + 1, n): if (arr[i]*arr[j]) % 22 == 0: cnt += 1 print(cnt)
Для Б
s = open(’27-14b.txt’, ’r’).readlines()[1:] arr = [] for i in range(len(s)): arr.append(int(s[i])) n = len(arr) n22, n11, n2 = 0, 0, 0 for i in range(n): a = arr[i] if a % 22 == 0: n22 += 1 elif a % 11 == 0: n11 += 1 elif a % 2 == 0: n2 += 1 k22 = n22 * (n22 - 1) // 2 + n22 * (n - n22) + n2 * n11 print(k22)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из N целых положительных чисел, необходимо определить количество пар двух элементов последовательности с различными номерами, произведение которых даёт число кратное 26.
Входные данные: Дан входной файл, который содержит в первой строке количество чисел N (1 N
100000). В каждой из последующих N строк записано одно натуральное число, не превышающее
1000.
В ответе укажите два числа через пробел: сначала значение для файла А, затем для файла B.
Для А
s = open(’27-15a.txt’, ’r’).readlines()[1:] arr = [] for i in range(len(s)): arr.append(int(s[i])) n = len(arr) cnt = 0 for i in range(n - 1): for j in range(i + 1, n): if (arr[i]*arr[j]) % 26 == 0: cnt += 1 print(cnt)
Для Б
s = open(’27-15b.txt’, ’r’).readlines()[1:] arr = [] for i in range(len(s)): arr.append(int(s[i])) n = len(arr) n26, n13, n2 =0, 0, 0 for i in range(n): a = arr[i] if a % 26 == 0: n26 += 1 elif a % 13 == 0: n13 += 1 elif a % 2 == 0: n2 += 1 k26 = n26 * (n26 - 1) // 2 + n26 * (n - n26) + n2 * n13 print(k26)
Ошибка.
Попробуйте повторить позже
На вход программы поступает последовательность из целых положительных чисел. Рассматриваются все пары различных элементов последовательности. Необходимо определить количество пар, для которых произведение элементов делится на 29.
Входные данные Даны два входных файла: A и B, каждый из которых содержит в первой строке количество чисел N (5 < N < 100000). Каждая из следующих N строк содержит одно натуральное число, не превышающее 10000.
Пример входных данных:
7
29
2
5
6
4
1
58
Для указанных входных данных программа должна вывести число 11.
В ответе укажите два числа через пробел: сначала количество соответствующих условию пар для файла A затем для файла B.
Предупреждение: для обработки файла В не следует использовать переборный алгоритм, определяющий количество всех возможных пар, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.
Статическое решение
f = open(’27B.txt’) #для ответа на A нужно подключить файл 27A.txt n = int(f.readline()) k29 = 0 nk = 0 for i in range(n): x = int(f.readline()) if x % 29 == 0: k29 += 1 else: nk += 1 print(k29*(k29-1)//2 + k29*nk)
Динамическое решение
f = open(’27B.txt’) #для ответа на A нужно подключить файл 27A.txt n = int(f.readline()) counter = 0 k29 = 0 nk = 0 for i in range(n): y = int(f.readline()) if y % 29 == 0: counter += (k29 + nk) k29 += 1 else: counter += k29 nk += 1 print(counter)