27.04 Пары/тройки чисел, выбрать из каждой пары/тройки число, кратность
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Имеется набор данных, состоящий из троек положительных целых чисел. Необходимо разделить числа в тройках на 3 группы, при этом в каждую группу должно попасть ровно одно число из каждой тройки. Группы должны удовлетворять следующим условиям:
1) Сумма чисел в первой группе нечетна
2) Сумма чисел во второй группе нечетна
Определите максимальную возможную сумму чисел в третьей группе.
Входные и выходные данные
В первой строке входного файла находится одно число: N – количество троек чисел. В следующих N строках находятся тройки чисел, которые необходимо разбить на группы.
Пример входного файла:
Ответ для данного примера:
В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.
Откроем текстовый документ файла . Запомним первое число и удалим его. Скопируем все числа в Excel. В ячейке
запишем формулу =МАКС(A1:C1), растянем её на весь диапазон
. В ячейке
запишем формулу
=НАИБОЛЬШИЙ(A1:C1;2), растянем её на весь диапазон
. В ячейке
запишем формулу
=НАИБОЛЬШИЙ(A1:C1;3), растянем её на весь диапазон
. В ячейке
запишем формулу
=СУММ(F1:F100), растянем её на диапазон
. Видим, что вторая сумма чётная, а третья —
нечётная. Значит, чтобы сделать вторую сумму чётной, надо поменять местами числа из первой и второй
группы.
В ячейке запишем формулу =F1-G1, растянем её на весь диапазон
. В ячейке
запишем формулу
=F1-H1, растянем её на весь диапазон
. Теперь отсортируем числа по столбцу
. Раздел Главная
Сортировка и фильтр
Настраиваемая сортировка
Сортируем по столбцу
по возрастанию. Видим, что
минимальная разница между столбцами находится в ячейке
. Значит, чтобы набрать две нечётных суммы, а третью —
максимальную, достаточно поменять числа в ячейках
и
местами. Получаем ответ:
. Аналогично работаем с
файлом
.
Ошибка.
Попробуйте повторить позже
На вход подается натуральное число , а затем последовательность из
натуральных чисел. Напишите программу,
которая выводит на экран всевозможные пары чисел. В качестве ответа выведите искомое количество элементов для
и последовательности
.
Всевозможные пары подразумевают, что в примере 3 4 5: 3 4 и 4 3 различные пары
array = []
for i in range(n):
array.append(int(input()))
for i in range(n):
for j in range(n):
print(array[i], array[j])
Ошибка.
Попробуйте повторить позже
На вход подается натуральное число , а затем последовательность из
натуральных чисел. Напишите программу,
которая выводит на экран все различные пары чисел. В качестве ответа выведите искомое количество элементов для
и последовательности
.
Различные пары подразумевают, что в примере 3 4 5: 3 4 и 4 3 одинаковые пары
array = []
for i in range(n):
array.append(int(input()))
for i in range(n):
for j in range(i + 1, n):
print(array[i], array[j])
Ошибка.
Попробуйте повторить позже
На вход подается натуральное число , а затем последовательность из
натуральных чисел. Напишите программу,
которая выводит на экран все различные тройки чисел. В качестве ответа выведите искомое количество элементов для
и последовательности
.
array = []
for i in range(n):
array.append(int(input()))
for i in range(n):
for j in range(i + 1, n):
for k in range(j + 1, n):
print(array[i], array[j], array[k])
Ошибка.
Попробуйте повторить позже
На вход подается натуральное число , а затем последовательность из
натуральных чисел. Напишите программу,
которая выводит на экран все различные пары чисел, произведение которых чётно. В качестве ответа выведите искомое
количество элементов для
и последовательности
.
array = []
for i in range(n):
array.append(int(input()))
for i in range(n):
for j in range(i + 1, n):
if (array[i] * array[j]) % 2 == 0:
print(array[i], array[j])
Ошибка.
Попробуйте повторить позже
На вход подается натуральное число , а затем последовательность из
натуральных чисел. Напишите программу,
которая выводит на экран все различные тройки чисел, сумма которых нечётна. В качестве ответа выведите искомое
количество элементов для
и последовательности
.
array = []
for i in range(n):
array.append(int(input()))
for i in range(n):
for j in range(i + 1, n):
for k in range(j + 1, n):
if (array[i] + array[j] + array[k]) % 2 != 0:
print(array[i], array[j], array[k])
Ошибка.
Попробуйте повторить позже
Максим Сергеевич любит большие числа. Сегодня ему дали задачу - из каждой группы чисел нужно выбрать
ровно 2 и найти их НОК. После этого находится сумма всех таких НОК. Также известно, что МС любит
числа 5 и 7, но не оба одновременно. МС с лёгкостью решил бы эту задачу, но после щелчка ему нужен
отдых, и он отправился путешествовать по маршруту Москва-Ярославль-Питер-Ярославль-Москва-Сочи.
Помогите МС. Найдите максимальную сумму НОК из каждой группы чисел, чтобы она делилась либо на 7, либо на 5, но
не на оба числа одновременно.
Входные данные:
Даны два входных файла, каждый из которых содержит в первой строке количество чисел (
). В
каждой из следующих
строк файлов записан сначала размер группы
(
), а затем
натуральных чисел, не
превышающих 500.
Пример входного файла:
4
2 8 6
3 2 7 8
2 6 5
4 7 3 8 6
Примечание:
Для указанных входных данных значения НОК для первой группы — 24; для второй группы — 14, 8, 56; для третьей
группы — 30, для четвёртой группы — 6, 21, 24, 24, 42, 56. Значением искомой суммы должно быть число 110
(24+14+30+42). В ответе укажите два числа: сначала искомое значение для файла А, затем для файла
B.
Решение №1.
def evklid(a, b): # поиск НОДа if b > a: a, b = b, a if a != 0 and b != 0: return evklid(a % b, b) return a + b # одно из чисел = 0 def nok(a, b): # НОК(a, b) = a * b // НОД(a, b) return a * b // evklid(a, b) f = open(’test.txt’) n = int(f.readline()) ans = [-10000000] * 35 ans[0] = 0 for i in range(n): a = [int(x) for x in f.readline().split()] # a[0] - количество элементов ans_new = [-10000000] * 35 for q in range(1, len(a)): for k in range(q + 1, len(a)): NOK = nok(a[q], a[k]) for j in range(35): ost = (ans[j] + NOK) % 35 if ans[j] + NOK > ans_new[ost]: ans_new[ost] = ans[j] + NOK ans = ans_new.copy() maxim = -1 for i in ans: if (i % 5 == 0 or i % 7 == 0) and i % 35 != 0: maxim = max(i, maxim) print(maxim)
Решение №2.
from math import gcd def solve(file): f = open(file) n = int(f.readline()) curr = [-1] * 35 curr[0] = 0 for q in range(n): a = list(map(int, f.readline().split())) cnt = a[0] del a[0] temp = [-1] * 35 for i in range(cnt - 1): for j in range(i + 1, cnt): x, y = a[i], a[j] nod = gcd(x, y) nok = x * y // nod for k in range(35): if curr[k] == -1: continue ost = (curr[k] + nok) % 35 temp[ost] = max(temp[ost], curr[k] + nok) curr = temp.copy() ans = -1 for i in range(35): if (i % 7 == 0 or i % 5 == 0) and i % 35 != 0: ans = max(ans, curr[i]) print(ans) f.close() solve("27-A.txt") solve("27-B.txt")
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар натуральных чисел. Каждая пара чисел представляет собой баллы за ЕГЭ по информатике (1 число) и физике (2 число), соответственно 100 баллов максимум. Необходимо выбрать из каждой пары число такое, что если баллы по физике меньше 60, то взять из пары баллы по информатике, иначе взять баллы по физике. Необходимо найти сумму этих баллов. Программа должна напечатать одно число — сумму, соответствующую условиям задачи.
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар
Каждая из следующих
строк содержит два натуральных числа, не превышающих
.
Пример входных данных:
5
100 50
30 49
88 79
90 90
79 48
Для указанных входных данных значением искомой суммы должно быть число 378.
В ответе укажите два числа: сначала значение для файла А, затем для файла B.
f = open(’B1-3.txt’) n = int(f.readline()) ans = 0 for i in range(n): a, b = map(int, f.readline().split()) if b < 60: ans += a else: ans += b print(ans)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар натуральных чисел. Каждая пара чисел представляет собой баллы за ЕГЭ по информатике (1 число) и математике (2 число), соответственно 100 баллов максимум. Необходимо составить рейтинг 3 лучших учеников исходя из их суммы баллов. Программа должна напечатать три числа — 3 суммы баллов учеников по убыванию, начиная с максимальной.
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар
Каждая из следующих
строк содержит два натуральных числа, не превышающих
.
Пример входных данных:
5
100 50
30 49
88 79
90 90
79 48
Для указанных входных данных выходными значениями должны быть 180 167 150.
В ответе укажите два числа: сначала значение для файла А, затем для файла B.
f = open(’B1-3.txt’) n = int(f.readline()) ans = [] for i in range(n): a, b = map(int, f.readline().split()) ans.append(a+b) ans.sort() print(ans[len(ans)-1],ans[len(ans)-2],ans[len(ans)-3])
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар натуральных чисел. Каждая пара чисел представляет собой средние баллы за ЕГЭ мальчиков (1 число) и девочек (2 число) из N-ой городской школы, соответственно 100 баллов максимум. Необходимо определить, в скольких школах количество баллов у мальчиков или у девочек больше, чем 60, и при этом есть хотя бы какая-то группа, балл которой не кратен 7.
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар
Каждая из следующих
строк содержит два натуральных числа, не превышающих
.
Пример входных данных:
5
100 50
30 49
88 79
90 90
79 48
Для указанных входных данных ответом будет: 4.
В ответе укажите два числа: сначала для файла А, затем для файла B.
f = open(’B1-3.txt’) n = int(f.readline()) ans = 0 for i in range(n): a, b = map(int, f.readline().split()) if (a > 60 or b > 60) and (a % 7 !=0 or b % 7 != 0): ans += 1 print(ans)