27.06 Макс/мин, кол-во пар, произведение кратно/не кратно
Ошибка.
Попробуйте повторить позже
Дано число и натуральных чисел. Каждое число находится в диапазоне от 0 до 10000. Напишите программу, которая находит количество пар чисел, произведение элементов которых четно. Пары - любые два числа в последовательности с разными номерами.
Напишите решение как статикой, так и динамикой.
В качестве ответа запишите результат выполнения программы для и чисел 2381, 2384, 7441, 5132, 1971, 3657, 9798, 307, 394, 4677, 8004, 5358, 9944, 8982, 7614, 3543, 6079, 3272, 2673, 7879, 3559, 8407, 3032, 7191, 9976.
1. Статика:
n = int(input()) count_even = 0 count_odd = 0 for i in range(n): current_number = int(input()) if current_number % 2 == 0: count_even += 1 else: count_odd += 1 answer = count_even * count_odd + count_even * (count_even - 1) // 2 print(answer)
2. Динамика:
n = int(input()) count_even = 0 count_odd = 0 answer = 0 for i in range(n): current_number = int(input()) if current_number % 2 == 0: answer += count_even + count_odd count_even += 1 else: answer += count_even count_odd += 1 print(answer)
Ошибка.
Попробуйте повторить позже
На вход программы поступает число N и последовательность из N целых положительных чисел. Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре неважен). Необходимо определить количество пар, для которых произведение элементов кратно 3.
В ответе запишите два числа через пробел: сначала искомое количество для файла A, затем для файла B.
Переборное решение
f = open("27.txt") n = int(f.readline()) a = [int(x) for x in f] ans = 0 k = 3 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 # Счётчик пар для ответа k3 = 0 # Количество чисел, кратных 3 nk = 0 # Количество чисел, не кратных 3 for i in range(n): x = int(f.readline()) if x % 3 == 0: k3 += 1 else: nk += 1 print(k3 * (k3-1) // 2 + k3 * nk)
Динамическое решение
f = open("27.txt") n = int(f.readline()) ans = 0 # Счётчик пар для ответа k3 = 0 # Количество чисел, кратных 3 nk = 0 # Количество чисел, не кратных 3 for i in range(n): x = int(f.readline()) if x % 3 == 0: ans += nk + k3 k3 += 1 else: ans += k3 nk += 1 print(ans)
Ошибка.
Попробуйте повторить позже
На вход программы поступает число N и последовательность из N целых положительных чисел. Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре неважен). Необходимо определить количество пар, для которых произведение элементов кратно 9.
В ответе запишите два числа через пробел: сначала искомое количество для файла A, затем для файла B.
Переборное решение
f = open("27.txt") n = int(f.readline()) a = [int(x) for x in f] ans = 0 k = 9 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 # Счётчик пар для ответа k9 = 0 # Количество чисел, кратных 9 k3 = 0 # Количество чисел, кратных 3, но не кратных 9 nk = 0 # Количество всех остальных чисел for i in range(n): x = int(f.readline()) if x % 9 == 0: k9 += 1 elif x % 3 == 0: k3 += 1 else: nk += 1 print(k9 * (k9 - 1) // 2 + k9 * (k3 + nk) + k3 * (k3 - 1) // 2)
Динамическое решение
f = open("27.txt") n = int(f.readline()) ans = 0 # Счётчик пар для ответа k9 = 0 # Количество чисел, кратных 9 k3 = 0 # Количество чисел, кратных 3, но не кратных 9 nk = 0 # Количество всех остальных чисел for i in range(n): x = int(f.readline()) if x % 9 == 0: ans += (k9 + k3 + nk) k9 += 1 elif x % 3 == 0: ans += (k9 + k3) k3 += 1 else: ans += k9 nk += 1 print(ans)
Ошибка.
Попробуйте повторить позже
На вход программы поступает число N и последовательность из N целых положительных чисел. Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре неважен). Необходимо определить количество пар, для которых произведение элементов кратно 38.
В ответе запишите два числа через пробел: сначала искомое количество для файла A, затем для файла B.
Переборное решение
f = open("27.txt") n = int(f.readline()) a = [int(x) for x in f] ans = 0 k = 38 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 # Счётчик пар для ответа k38 = 0 # Количество чисел, кратных 38 k19 = 0 # Количество чисел, кратных 19, но не кратных 38 k2 = 0 # Количество чисел, кратных 2, но не кратных 38 nk = 0 # Количество остальных чисел for i in range(n): x = int(f.readline()) if x % 38 == 0: k38 += 1 elif x % 19 == 0: k19 += 1 elif x % 2 == 0: k2 += 1 else: nk += 1 print(k38 * (k38 - 1) // 2 + k38 * (k19 + k2 + nk) + k19 * k2)
Динамическое решение
f = open("27.txt") n = int(f.readline()) ans = 0 # Счётчик пар для ответа k38 = 0 # Количество чисел, кратных 38 k19 = 0 # Количество чисел, кратных 19, но не кратных 38 k2 = 0 # Количество чисел, кратных 2, но не кратных 38 nk = 0 # Количество остальных чисел for i in range(n): x = int(f.readline()) if x % 38 == 0: ans += (k38 + k19 + k2 + nk) k38 += 1 elif x % 19 == 0: ans += (k38 + k2) k19 += 1 elif x % 2 == 0: ans += (k38 + k19) k2 += 1 else: ans += k38 nk += 1 print(ans)
Ошибка.
Попробуйте повторить позже
Имеется набор данных из целых положительных чисел. Рассматриваются все пары различных элементов последовательности. Необходимо определить количество пар, произведение которых будет кратно .
В первой строке входных данных задаётся количество чисел . В каждой из последующих строк записано одно целое положительное число, не превышающее .
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла .
Входные данные | Выходные данные |
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)
Ошибка.
Попробуйте повторить позже
По каналу связи передавались данные в виде последовательности натуральных чисел, не больших 1000. Количество чисел не больше Контрольное значение равно максимально возможному произведению двух чисел из переданного набора, делящееся на 13. В последовательности гарантируется, что такое произведение есть.
Программа должна напечатать одно число - вычисленное контрольное значение.
Входные данные
В первой строке дано количество чисел N, в каждой из последующих N строк записано одно натуральное число, не превышающее 1000.
В качестве ответа укажите результат выполнения программы для файла A, а затем, через пробел, для файла B.
Переборное решение
f = open("27.txt") n = int(f.readline()) a = [int(x) for x in f] ans = 0 k = 13 for i in range(n): for j in range(i + 1, n): if a[i] * a[j] % k == 0: ans = max(ans, a[i] * a[j]) print(ans)
Статическое решение
f = open("27.txt") n = int(f.readline()) max1_kr13 = 0 # Первое по величине число, кратное 13 max2_kr13 = 0 # Второе по величине число, кратное 13 max_nekr = 0 # Максимальное число, не кратное 13 for i in range(n): x = int(f.readline()) if x % 13 == 0: if x > max1_kr13: max2_kr13 = max1_kr13 max1_kr13 = x elif x > max2_kr13: max2_kr13 = x else: max_nekr = max(max_nekr, x) ans = max(max1_kr13 * max2_kr13, max1_kr13 * max_nekr) print(ans)
Динамическое решение
f = open("27.txt") n = int(f.readline()) max_kr13 = 0 # Максимальное число, кратное 13 max_nekr = 0 # Максимальное число, не кратное 13 ans = 0 for i in range(n): x = int(f.readline()) if x % 13 == 0: ans = max(ans, x * max_kr13, x * max_nekr) max_kr13 = max(max_kr13, x) else: ans = max(ans, x * max_kr13) max_nekr = max(max_nekr, x) print(ans)
Ошибка.
Попробуйте повторить позже
По каналу связи передавались данные в виде последовательности натуральных чисел, не больших 10000. Количество чисел не больше Контрольное значение равно такому максимальному возможному произведению двух чисел из переданного набора, делящееся на 21. В последовательности гарантируется, что такое произведение есть.
Программа должна напечатать одно число - вычисленное контрольное значение.
Входные данные
В первой строке дано количество чисел N, в каждой из последующих N строк записано одно натуральное число, не превышающее 1000.
В качестве ответа укажите результат выполнения программы для файла A, затем, через пробел, для файла B.
Переборное решение
f = open("27.txt") n = int(f.readline()) a = [int(x) for x in f] ans = 0 k = 21 for i in range(n): for j in range(i + 1, n): if a[i] * a[j] % k == 0: ans = max(ans, a[i] * a[j]) print(ans)
Статическое решение
f = open("27.txt") n = int(f.readline()) max1_kr21 = 0 # Первое по величине число, кратное 21 max2_kr21 = 0 # Второе по величине число, кратное 21 max_kr7 = 0 # Максимальное число, кратное 7 max_kr3 = 0 # Максимальное число, кратное 3 max_nekr = 0 # Максимальное число, не кратное 3, 7 и 21 for i in range(n): x = int(f.readline()) if x % 21 == 0: if x > max1_kr21: max2_kr21 = max1_kr21 max1_kr21 = x elif x > max2_kr21: max2_kr21 = x elif x % 7 == 0: max_kr7 = max(max_kr7, x) elif x % 3 == 0: max_kr3 = max(max_kr3, x) else: max_nekr = max(max_nekr, x) ans = max(max1_kr21 * max(max2_kr21, max_kr7, max_kr3, max_nekr), max_kr7 * max_kr3) print(ans)
Динамическое решение
f = open("27.txt") n = int(f.readline()) max_kr21 = 0 # Максимальное число, кратное 21 max_kr7 = 0 # Максимальное число, кратное 7 max_kr3 = 0 # Максимальное число, кратное 3 max_nekr = 0 # Максимальное число, не кратное 3, 7 и 21 ans = 0 for i in range(n): x = int(f.readline()) if x % 21 == 0: ans = max(ans, x * max_kr21, x * max_kr7, x * max_kr3, x * max_nekr) max_kr21 = max(max_kr21, x) elif x % 7 == 0: ans = max(ans, x * max_kr3, x * max_kr21) max_kr7 = max(max_kr7, x) elif x % 3 == 0: ans = max(ans, x * max_kr7, x * max_kr21) max_kr3 = max(max_kr3, x) else: ans = max(ans, x * max_kr21) max_nekr = max(max_nekr, x) print(ans)
Ошибка.
Попробуйте повторить позже
По каналу связи передавались данные в виде последовательности натуральных чисел, не больших 1000. Количество чисел не больше Контрольное значение равно такому минимальному возможному произведению двух чисел из переданного набора, делящееся на 7, но не делящееся на 49. Если такого произведения нет, программа должна напечатать -1.
Программа должна напечатать одно число - вычисленное контрольное значение.
Входные данные
В первой строке дано количество чисел N, в каждой из последующих N строк записано одно натуральное число, не превышающее 1000.
В качестве ответа укажите результат выполнения программы на следующих тестах(ответ на каждый тест через
пробел):
Тест | Входные данные |
Первый | 4 |
7 | |
5 | |
2 | |
4 | |
Второй | 4 |
7 | |
7 | |
49 | |
49 | |
Третий | 4 |
14 | |
3 | |
7 | |
14 | |
Переборное решение
f = open("27.txt") n = int(f.readline()) a = [int(x) for x in f] ans = 10 ** 20 for i in range(n): for j in range(i + 1, n): if (a[i] * a[j] % 7 == 0) and (a[i] * a[j] % 49 != 0): ans = min(ans, a[i] * a[j]) if ans == 10 ** 20: ans = -1 print(ans)
Статическое решение
f = open("27.txt") n = int(f.readline()) min_kr7 = 10 ** 20 # Минимальное число, кратное 7 min_nekr = 10 ** 20 # Минимальное число, не кратное 7 for i in range(n): x = int(f.readline()) if x % 7 == 0: min_kr7 = min(min_kr7, x) else: min_nekr = min(min_nekr, x) if min_kr7 == 10 ** 20 or min_nekr == 10 ** 20: ans = -1 else: ans = min_kr7 * min_nekr print(ans)
Динамическое решение
f = open("27.txt") n = int(f.readline()) ans = 10 ** 20 min_kr7 = 10 ** 20 # Минимальное число, кратное 7 min_nekr = 10 ** 20 # Минимальное число, не кратное 7 for i in range(n): x = int(f.readline()) if x % 7 == 0: ans = min(ans, x * min_nekr) min_kr7 = min(min_kr7, x) else: ans = min(ans, x * min_kr7) min_nekr = min(min_nekr, x) if ans == 10 ** 20: ans = -1 print(ans)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Имеется набор данных, состоящий из положительных целых чисел. Необходимо найти наибольшее произведение двух элементов, с разными номерами, не кратное . Гарантируется, что хотя бы одно такое произведение в последовательности есть. Программа должна напечатать одно число — максимально возможное произведение, которое соответствует условиям задачи.
Входные данные:
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество чисел Каждая из следующих строк содержит натуральное число, не превышающих .
Пример организации исходных данных во входном файле:
Для указанных входных данных значением искомого произведения должно быть .
В ответе укажите два числа: сначала значение искомого произведения для файла А, затем для файла B. Полученные значения запишите через пробел.
Переборное решение
# Читаем все числа в файле with open(’Задание 27 A.txt’, ’r’) as f: nums = list(map(int, f.readlines())) n = nums[0] # Первое число в файле N nums = nums[1:] # Последовательность чисел без N ans = 0 # Искомое произведение # Перебираем все возможные пары чисел for i in range(n): for j in range(i + 1, n): f, s = nums[i], nums[j] # f, s - первое и второе число из пары соответственно if (f * s) % 5 != 0: # Если пара нам подходит (произведение не кратно 5) ans = max(ans, f * s) # Обновляем искомое произведение если оно меньше текущего print(ans) # Выводим ответ
Статическое решение
Чтобы произведение двух чисел не было кратно 5, нужно чтобы оба этих числа не были кратны 5. Чтобы получить максимальное произведение — достаточно найти два таких наибольших числа и перемножить.
f = open(’Задание 27 B.txt’, ’r’) # Открываем файл n = int(f.readline()) # Читаем число N mn5 = -1000000000000000000001 # Максимальное число не кратное 5 pr_mn5 = -1000000000000000000001 # Предмаксимальное число не кратное 5 for i in range(n): # Проходимся по всем числам последовательности x = int(f.readline()) # Очередное число из последовательности if x % 5 != 0: # Если число нам подходит (не кратно 5) # Если оно больше максимума или предмаксимума, то обновляем их if x > mn5: pr_mn5 = mn5 mn5 = x elif x > pr_mn5: pr_mn5 = x print(mn5 * pr_mn5) # Выводим ответ f.close() # Закрываем файл
Динамическое решение
f = open("27.txt") n = int(f.readline()) max_nekr5 = -10 ** 20 # Максимальное число не кратное 5 ans = -10 ** 20 for i in range(n): x = int(f.readline()) if x % 5 != 0: # Если оно больше максимума или предмаксимума, то обновляем их ans = max(ans, max_nekr5 * x) max_nekr5 = max(max_nekr5, x) print(ans)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Имеется набор данных, состоящий из положительных целых чисел. Необходимо найти наибольшее произведение двух элементов, с разными номерами, кратное . Гарантируется, что хотя бы одно такое произведение в последовательности есть. Программа должна напечатать одно число — максимально возможное произведение, которое соответствует условиям задачи.
Входные файлы:
Файл 27 A
Файл 27 B
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество чисел . Каждая из следующих строк содержит натуральное число, не превышающих .
Пример организации исходных данных во входном файле:
4
44
10
11
56
Для указанных входных данных значением искомого произведения должно быть .
В ответе укажите два числа: сначала значение искомого произведения для файла А, затем, через пробел, для файла B.
Переборное решение
f = open(’Задание_27_A__d0r5.txt’) n = int(f.readline()) a = [int(f.readline()) for i in range(n)] ma = -999999999 for i in range(n): for j in range(i + 1, n): if a[i] * a[j] % 11 == 0: ma = max(ma, a[i] * a[j]) print(ma)
Статическое решение
f = open(’Задание_27_B__d0r9.txt’) n = int(f.readline()) mach, pmach, pmanch = 0, 0, 0 #mach - макс. кратное 11 число #pmach - предмакс. кратное 11 число #manch - макс. некратное 11 число for i in range(n): x = int(f.readline()) if x % 11 == 0: if mach < x: pmach = mach mach = x elif pmach < x: pmach = x elif pmanch < x: pmanch = x print(max(mach * pmach, mach * pmanch))
Динамическое решение
f = open(’Задание_27_B__d0r9.txt’) n = int(f.readline()) ans = 0 max_kr11 = 0 # Максимальное число, кратное 11 max_nekr = 0 # Максимальное число, не кратное 11 for i in range(n): x = int(f.readline()) if x % 11 == 0: ans = max(ans, x * max_nekr, x * max_kr11) max_kr11 = max(max_kr11, x) else: ans = max(ans, x * max_kr11) max_nekr = max(max_nekr, x) print(ans)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
По каналу связи передавалась последовательность положительных целых чисел, все числа не превышают 1000. Количество чисел известно. Необходимо найти контрольное значение последовательности — наибольшее число R, удовлетворяющее следующим условиям:
1) R — произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных элементов последовательности, равных по величине, допускаются);
2) R делится на 3, но не делится на 6.
Если такого числа R нет, то контрольное значение полагается равным 0.
Программа должна напечатать одно число — вычисленное контрольное значение, соответствующую условиям задачи.
Входные файлы:
Файл 27 A
Файл 27 B
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество чисел В каждой из последующих N строк записано одно натуральное число, не превышающее 1000.
Пример организации исходных данных во входном файле:
5
666
120
75
527
148
Для указанных входных данных значением искомого произведения должно быть 39525.
В ответе укажите два числа: сначала значение искомого произведения для файла А, затем, через пробел, для файла B.
Переборное решение
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]: if ((a[i] * a[j]) % 3 == 0) and ((a[i] * a[j]) % 6 != 0): ans = max(ans, a[i] * a[j]) print(ans)
Статическое решение
f = open(’Задание_27_B__ejg7.txt’) max_k3 = 0 pmax_k3 = 0 max_nekr = 0 n = int(f.readline()) for i in range(n): x = int(f.readline()) if x % 3 == 0 and x % 2 != 0: if x > max_k3: pmax_kr = max_k3 max_k3 = x elif x > pmax_k3: pmax_k3 = x if x % 2 != 0 and x%3!=0: max_nekr = max(max_nekr, x) print(max(max_k3*pmax_k3, max_k3*max_nekr))
Динамическое решение
f = open(’Задание_27_B__ejg7.txt’) n = int(f.readline()) ans = 0 max_kr3 = 0 # Максимальное число, кратное 3 max_nekr = 0 # Максимальное число, не кратное 3 for i in range(n): x = int(f.readline()) # Чтобы произведение было кратно 3, но при этом не кратно 6 нужно, # чтобы в паре не было числа, кратного 2 if x % 2 != 0: if x % 3 == 0: ans = max(ans, x * max_nekr, x * max_kr3) max_kr3 = max(max_kr3, x) else: ans = max(ans, x * max_kr3) max_nekr = max(max_nekr, x) print(ans)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Имеется набор данных, состоящий из положительных целых чисел. Необходимо найти наибольшее произведение двух элементов, с разными номерами, кратное 10. Гарантируется, что хотя бы одно такое произведение в последовательности есть. Программа должна напечатать одно число — максимально возможное произведение, которое соответствует условиям задачи.
Входные файлы:
Файл 27 A
Файл 27 B
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар Каждая из следующих N строк содержит натуральное число, не превышающих 1000.
Пример организации исходных данных во входном файле:
5
100
594
743
149
267
Для указанных входных данных значением искомого произведения должно быть 74300.
В ответе укажите два числа: сначала значение искомого произведения для файла А, затем для файла B.
Переборное решение
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]) % 10 == 0: ans = max(ans, a[i] * a[j]) print(ans)
Статическое решение
f = open(’Задание_27_B__f6wi.txt’) n = int(f.readline()) max_kr10 = 0 # Максимальное число, кратное 10 predmax_kr10 = 0 # Второе по величине число, кратное 10 max_kr5 = 0 # Максимальное число, кратное 5, но не 10 max_kr2 = 0 # Максимальное число, кратное 2, но не 10 max_nekr = 0 # Максимальное число, не кратное 2, 5 или 10 for i in range(n): x = int(f.readline()) if x % 10 == 0: if x > max_kr10: predmax_kr10 = max_kr10 max_kr10 = x elif x > predmax_kr10: predmax_kr10 = x elif x % 5 == 0: max_kr5 = max(max_kr5, x) elif x % 2 == 0: max_kr2 = max(max_kr2, x) else: max_nekr = max(x, max_nekr) # Возможные пары: # максимальное число, кратное 10, и любое другое pair1 = max_kr10 * max(predmax_kr10, max_kr5, max_kr2, max_nekr) # максимальные числа, кратные 5 и 2 pair2 = max_kr5 * max_kr2 print(max(pair1, pair2))
Динамическое решение
f = open(’Задание_27_B__f6wi.txt’) n = int(f.readline()) max_kr10 = 0 # Максимальное число, кратное 10 max_kr5 = 0 # Максимальное число, кратное 5, но не 10 max_kr2 = 0 # Максимальное число, кратное 2, но не 10 max_nekr = 0 # Максимальное число, не кратное 2, 5 или 10 ans = 0 for i in range(n): x = int(f.readline()) if x % 10 == 0: ans = max(ans, x*max_nekr, x*max_kr10, x*max_kr2, x*max_kr5) max_kr10 = max(max_kr10, x) elif x % 5 == 0: ans = max(ans, x*max_kr10, x*max_kr2) max_kr5 = max(max_kr5, x) elif x % 2 == 0: ans = max(ans, x*max_kr10, x*max_kr5) max_kr2 = max(max_kr2, x) else: ans = max(ans, x*max_kr10) max_nekr = max(x, max_nekr) print(ans)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
По каналу связи передавалась последовательность натуральных чисел, все числа не превышают . Количество чисел известно. Необходимо найти контрольное значение последовательности — наибольшее число , удовлетворяющее следующим условиям:
1. — произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных элементов последовательности, равных по величине, допускаются);
2. делится на , но не делится на .
Если такого числа нет, то контрольное значение полагается равным .
Программа должна напечатать одно число — вычисленное контрольное значение, соответствующую условиям задачи.
Входные файлы:
Файл 27 A
Файл 27 B
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество чисел . В каждой из последующих строк записано одно натуральное число, не превышающее .
Пример организации исходных данных во входном файле:
Для указанных входных данных значением искомого произведения должно быть .
В ответе укажите два числа: сначала значение искомого произведения для файла , затем для файла .
f = open(’Задание_27_B__fpx8.txt’) n = int(f.readline()) a = [] for i in range(n): a.append(int(f.readline())) nk2 = 0 nk4 = 0 nk7 = 0 nk14 = 0 nk28 = 0 ans = 0 ans = 0 for i in range(n): x = a[i] if x % 28 != 0: if x % 14 == 0: ans = max(ans, x*nk2) elif (x % 7 == 0): ans = max(ans, x*nk4) elif (x % 4 == 0): ans = max(ans, x*nk7) elif(x % 2 == 0): ans = max(ans, x*nk14) else: ans = max(ans, x*nk28) if (x % 2 != 0) and (x > nk2): nk2 = x if (x % 4 != 0) and (x > nk4): nk4 = x if (x % 7 != 0) and (x > nk7): nk7 = x if (x % 14 != 0) and (x > nk14): nk14 = x if (x % 28 != 0) and (x > nk28): nk28 = x print(ans)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Имеется набор данных, состоящий из положительных целых чисел. Необходимо найти наибольшее произведение двух элементов, с разными номерами, кратное . Гарантируется, что хотя бы одно такое произведение в последовательности есть. Программа должна напечатать одно число — максимально возможное произведение, которое соответствует условиям задачи.
Входные файлы:
Файл 27 A
Файл 27 B
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар Каждая из следующих N строк содержит натуральное число, не превышающих 1000.
В ответе укажите два числа: сначала значение искомого произведения для файла А, затем для файла B.
Переборное решение
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]) % 3 == 0: ans = max(ans, a[i] * a[j]) print(ans)
Статическое решение
file = open(’Задание_27_A__hi6v__swy9.txt’) n = int(f.readline()) max_kr3 = 0 # Максимальное число, кратное 3 predmax_kr3 = 0 # Второе по величине число, кратное 3 max_nekr = 0 # Максимальное число, не кратное 3 for i in range(n): x = int(f.readline()) if x % 3 == 0: if x > max_kr3: predmax_kr3 = max_kr3 max_kr3 = x elif x > predmax_kr3: predmax_kr3 = x else: max_nekr = max(x, max_nekr) print(max_kr3 * max(predmax_kr3, max_nekr))
Динамическое решение
file = open(’Задание_27_A__hi6v__swy9.txt’) n = int(file.readline()) ans = 0 # Максимальное произведение чисел, кратное 3 kr3 = 0 # Максимальное число, кратное 3 nekr = 0 # Максимальное число, не кратное 3 for i in range(n): x = int(file.readline()) if x % 3 == 0: ans = max(ans, x * kr3, x * nekr) kr3 = max(kr3, x) else: ans = max(ans, x * kr3) nekr = max(nekr, x) print(ans)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Последовательность натуральных чисел характеризуется числом — наибольшим числом, кратным 15 и являющимся произведением двух элементов последовательности с различными номерами. Найдите . Гарантируется, что хотя бы одно такое произведение в последовательности есть.
Входные данные:
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество чисел (). В каждой из последующих строк записано одно натуральное число, не превышающее .
Пример организации исходных данных во входном файле:
Пример выходных данных для приведённого выше примера входных данных:
В ответе укажите два числа: сначала значение искомого произведения для файла А, затем, через пробел, для файла 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): X = a[i] * a[j] if X % 15 == 0: ans = max(ans, X) print(ans)
Решение 2 (эффективное)
f = open("27B.txt") mn = 0 m3 = 0 m5 = 0 m15 = 0 ans = 0 n = int(f.readline()) for i in range(n): x = int(f.readline()) if x % 15 == 0: ans = max(ans, x*m15, x*m5, x*m3, x*mn) if x > m15: m15 = x elif x % 3 == 0: ans = max(ans, x*m15, x*m5) if x > m3: m3 = x elif x % 5 == 0: ans = max(ans, x*m3, x*m15) if x > m5: m5 = x else: ans = max(ans, x*m15) if x > mn: mn = x print(ans)
Ошибка.
Попробуйте повторить позже
На вход подаётся последовательность из натуральных чисел, каждое из которых не больше 1000. Напишите программу, вычисляющую минимальное чётное произведение двух элементов последовательности. Гарантируется, что искомое произведение получить можно.
Входные данные
В первой строке дано количество чисел , в каждой из последующих строк записано одно натуральное число, не превышающее 1000.
Выходные данные
Минимальное произведение двух элементов.
Примечание: двумя элементами последовательности считаются любые два элемента, в том числе не стоящие рядом. Брать произведение элемента самого на себя запрещается, но можно брать произведение двух элементов, равных по значению.
Пример входных и выходных данных:
Входные данные | Выходные данные |
4 | 10 |
12 | |
1 | |
10 | |
5 | |
Переборное решение
f = open("5.txt") n = int(f.readline()) a = [int(f.readline()) for x in range(n)] ans = 1000000000 for i in range(n): for j in range(i + 1, n): if (a[i] * a[j]) % 2 == 0: ans = min(ans, a[i] * a[j]) print(ans)
Статическое решение
f = open(’5.txt’) n = int(f.readline()) min_kr2 = 10**20 # Минимальное число, кратное 2 predmin_kr2 = 10**20 # Второе наименьшее число, кратное 2 min_nekr = 10**20 # Минимальное число, не кратное 2 for i in range(n): x = int(f.readline()) if x % 2 == 0: if x < min_kr2: predmin_kr2 = min_kr2 min_kr2 = x elif x < predmin_kr2: predmin_kr2 = x else: min_nekr = min(x, min_nekr) print(min_kr2 * min(predmin_kr2, min_nekr))
Динамическое решение
f = open(’5.txt’) n = int(f.readline()) minim_2 = 10000000 # Минимальное число, кратное 2 minim = 10000001 # Минимальное число, не кратное 2 ans = 10000000 # Минимальное произведение, кратное 2 for i in range(n): x = int(f.readline()) if x % 2 == 0: ans = min(ans, minim * x, minim_2 * x) minim_2 = min(minim_2, x) else: ans = min(ans, minim_2 * x) minim = min(minim, x) print(ans)
Ошибка.
Попробуйте повторить позже
Последовательность натуральных чисел характеризуется числом — наибольшим числом, кратным и являющимся произведением двух элементов последовательности с различными номерами. Гарантируется, что хотя бы одно такое произведение в последовательности есть.
Входные данные.
Даны два входных файла ("file_A"и "file_B"), каждый из которых содержит в первой строке количество чисел (). В каждой из последующих строк записано одно натуральное число, не превышающее .
В ответе укажите два числа: сначала значение искомого произведения для файла A, затем, через пробел, для файла B.
Переборное решение
f = open("27A.txt") n = int(f.readline()) a = [int(x) for x in f] # Считываем числа в список ans = 0 # Переменная для максимального произведения, кратного 3 # Перебор всех возможных пар чисел for i in range(n): for j in range(i + 1, n): if (a[i] * a[j]) % 3 == 0: ans = max(ans, a[i] * a[j]) print(ans)
Статическое решение
file = open(’27B.txt’) n = int(f.readline()) max_kr3 = 0 # Максимальное число, кратное 3 predmax_kr3 = 0 # Второе по величине число, кратное 3 max_nekr = 0 # Максимальное число, не кратное 3 for i in range(n): x = int(f.readline()) if x % 3 == 0: if x > max_kr3: predmax_kr3 = max_kr3 max_kr3 = x elif x > predmax_kr3: predmax_kr3 = x else: max_nekr = max(x, max_nekr) print(max_kr3 * max(predmax_kr3, max_nekr))
Динамическое решение
file = open(’27B.txt’) n = int(f.readline()) ans = 0 # Переменная для хранения максимального произведения, подходящего под условие max_kr3 = 0 # Максимальное число, кратное 3 max_nekr = 0 # Максимальное число, не кратное 3 for i in range(n): x = int(f.readline()) if x % 3 == 0: ans = max(ans, x * max_nekr, x * max_kr3) max_kr3 = max(max_kr3, x) else: ans = max(ans, x * max_kr3) max_nekr = max(max_nekr, x) print(ans)
Ошибка.
Попробуйте повторить позже
Последовательность натуральных чисел характеризуется числом — наибольшим числом, кратным 14 и являющимся произведением двух элементов последовательности с различными номерами. Гарантируется, что хотя бы одно такое произведение в последовательности есть.
Входные данные.
Даны два входных файла ("file_A"и "file_B"), каждый из которых содержит в первой строке количество чисел (). В каждой из последующих строк записано одно натуральное число, не превышающее 1000.
В ответе укажите два числа: сначала значение искомого произведения для файла А, затем для файла 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): R = a[i] * a[j] if R % 14 == 0: ans = max(ans, R) print(ans)
Решение 2 (эффективное)
file = open(’file_B.txt’, ’rt’, encoding=’utf-8’) n = int(file.readline()) maxim = -1 max_div_by14 = -1 prev_max_div_by14 = -1 max_div_by7 = -1 max_div_by2 = -1 for i in range(n): x = int(file.readline()) if x % 14 == 0: if x > max_div_by14: prev_max_div_by14 = max_div_by14 max_div_by14 = x elif x > prev_max_div_by14: prev_max_div_by14 = x elif x % 7 == 0: max_div_by7 = max(max_div_by7, x) elif x % 2 == 0: max_div_by2 = max(max_div_by2, x) else: maxim = max(maxim, x) ans = [max_div_by14 * maxim, max_div_by14 *prev_max_div_by14] ans += [max_div_by14 *max_div_by7, max_div_by14 *max_div_by2] ans += [max_div_by2 * max_div_by7] print(max(ans))
Ошибка.
Попробуйте повторить позже
В файле содержится последовательность из целых положительных чисел. Определите и запишите в ответе сначала количество пар элементов последовательности, для которых произведение элементов кратно , затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два различных элемента последовательности. Порядок элементов в паре не важен.
file = open("17.txt") a = [] count = 0 minim = 10000000000 for i in range(10000): a.append(int(file.readline())) for i in range(len(a)): for j in range(i + 1, len(a)): if a[i] * a[j] % 34 == 0: count += 1 minim = min(minim, a[i] + a[j]) print(count, minim)
Ошибка.
Попробуйте повторить позже
Дана последовательность из целых положительных чисел. Необходимо определить количество пар элементов этой последовательности, произведение которых чётно.
В первой строке входных данных задаётся количество чисел (). В каждой из последующих строк записано одно целое положительное число, не превышающее .
Решение 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]) % 2 == 0: ans += 1 print(ans)
Решение 2 (эффективное)
f = open(’1.txt’) n = int(f.readline()) even, ans = 0, 0 # если число четное, то в паре с ним могут быть все числа, которые были считаны ранее # если число нечетное, то в паре могут быть только четные числа for i in range(n): x = int(f.readline()) if x % 2 == 0: ans += i even += 1 else: ans += even print(ans)