Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 41 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – минимально возможную сумму, соответствующую условиям задачи
Входные данные: Даны два входных файла: файл (27_10A.txt) и файл (27_10B.txt), каждый из которых содержит в первой строке количество троек . Каждая из следующих строк содержит три натуральных числа, не превышающих 10000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла .
f = open(’27_10B.txt’) n = int(f.readline()) s = 0 #массив для хранения минимальных разностей mr = [1000000000500000000000]*41 for i in range(n): #пара чисел из файла a, b = map(int, f.readline().split()) #добавляем к сумме минимальное число из пары s += min(a, b) d = abs(a-b) #разница между числами в паре mr1 = mr[:] #копия массива минимальных разностей #проходимся по всем остаткам от деления на 41 for j in range(41): #если сумма разницы и элемента массива меньше элемента в массиве, #обновляем элемент в массиве if d + mr1[j] < mr[(d+mr1[j]) % 41]: mr[(d+mr1[j]) % 41] = d + mr1[j] #если разница меньше элемента в массиве, обновляем элемент if d < mr[d % 41]: mr[d % 41] = d #если сумма делится на 41, выводим ее if s % 41 == 0: print(s) else:# проходимся по всем элементам массива минимальных разностей for i in range(41): #если сумма с текущим элементом массива делится на 41, #выводим это значение if (s + mr[i]) % 41 == 0: print(s + mr[i])
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из троек положительных целых чисел. Необходимо выбрать из каждой тройки ровно одно число так, чтобы сумма всех выбранных чисел делилась на 37 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – минимально возможную сумму, соответствующую условиям задачи.
Входные данные: Даны два входных файла: файл A (27_9A.txt) и файл В (27_9B.txt), каждый из которых содержит в первой строке количество пар N . Каждая из следующих строк содержит три натуральных числа, не превышающих 10000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла .
f = open(’27_9B.txt’) n = int(f.readline()) #массив для хранения минимальных сумм mr = [10000000000] * 37 #начальная сумма для 0 равна 0 mr[0] = 0 for i in range(n): a, b, c = list(map(int, f.readline().split())) #временный массив для хранения минимальных сумм mr1 = [10000000000] * 37 #проходимся по всем суммам в массиве mr for j in range(37): #обновляем минимальную сумму для каждого остатка от деления суммы на 37, #добавляя к текущей сумме каждое из чисел из тройки и сохраняя минимальность mr1[(mr[j] + a) % 37] = min(mr1[(mr[j] + a) % 37], mr[j] + a) mr1[(mr[j] + b) % 37] = min(mr1[(mr[j] + b) % 37], mr[j] + b) mr1[(mr[j] + c) % 37] = min(mr1[(mr[j] + c) % 37], mr[j] + c) #обновляем массив mr новыми минимальными суммами по модулю 37 mr = mr1.copy() #выводим минимальную сумму для остатка 0 print(mr[0])
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из троек положительных целых чисел. Необходимо выбрать из каждой тройки два числа так, чтобы сумма всех выбранных чисел делилась на 190 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – максимально возможную сумму, соответствующую условиям задачи.
Входные данные: Даны два входных файла: файл A (27_8A.txt) и файл В (27_8B.txt), каждый из которых содержит в первой строке количество пар N . Каждая из следующих строк содержит три натуральных числа, не превышающих 10000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла .
f = open(’27_8B.txt’) n = int(f.readline()) s = [0]#список, в котором мы будем записывать промежуточные суммы на каждом шаге D = 190#наш делитель for i in range(n): troika = sorted((map(int,f.readline().split())))#считываем текущую строку #образуем всевозможные суммы, которые можно сделать на текущей строке с учетом того, что берем ровно два числа s = [a + troika[j] + troika[k] for a in s for j in range(len(troika)-1) for k in range(j+1,len(troika))] s = {x % D:x for x in sorted(set(s))}.values() #Словарь в качестве ключа которого остаток суммы при делении на D и в качестве значения cама сумма. #Поскольку x проходится по отсортированному по возрастанию списку s, #то максимальные суммы текущей строки с определенным остатком при делении на D #перезапишут минимальные суммы текущей строки с таким же остатком при делении на D. #Данная конструкция позволяет значительно уменьшить количество значений сумм в списке s, #поскольку мы оставляем только максимальные суммы под определенным остатком при делении на D. #длина списка s всегда будет меньше или равна D. Сам метод решения называется метод частичных сумм. print([x for x in s if x % D == 0])#Вывод значения, которое кратно 190
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из троек положительных целых чисел. Необходимо выбрать из каждой тройки два числа так, чтобы сумма всех выбранных чисел не делилась на 15 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – максимально возможную сумму, соответствующую условиям задачи.
Входные данные: Даны два входных файла: файл (27_7A.txt) и файл (27_7B.txt), каждый из которых содержит в первой строке количество троек . Каждая из следующих строк содержит три натуральных числа, не превышающих 1000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла .
f = open(’27_7B.txt’) n = int(f.readline()) s = 0 #минимальная разность mr = 1000050000000 for i in range(n): #тройка чисел из файла в порядке возрастания a = sorted(map(int, f.readline().split())) #сумма двух наибольших чисел из тройки s += a[1] + a[2] #проверяем разницу между наименьшим и средним числом в тройке, #и обновляем минимальную разницу, исключая деление на 15 if (a[1] - a[0] < mr) and ((a[1] - a[0]) % 15 != 0): mr = a[1] - a[0] #проверяем разницу между наименьшим и средним числом в тройке, #и обновляем минимальную разницу, исключая деление на 15 if (a[2] - a[0] < mr) and ((a[2] - a[0]) % 15 != 0): mr = a[2] - a[0] #проверяем, делится ли сумма на 15 if s % 15 != 0: #если нет, выводим сумму print(s) else: #если да, вычитаем минимальную разницу из суммы и выводим s -= mr print(s)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 23 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – минимально возможную сумму, соответствующую условиям задачи
Входные данные: Даны два входных файла: файл (27_6A.txt) и файл (27_6B.txt), каждый из которых содержит в первой строке количество троек . Каждая из следующих строк содержит три натуральных числа, не превышающих 10000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла .
f = open(’27_6B.txt’) n = int(f.readline()) s = 0 #массив для хранения минимальных разностей mr = [1000000000500000000000]*23 for i in range(n): #пара чисел из файла a, b = map(int, f.readline().split()) #добавляем к сумме минимальное число из пары s += min(a, b) #разница между числами в паре d = abs(a-b) #копия массива минимальных разностей mr1 = mr[:] #проходимся по всем остаткам от деления на 23 for j in range(23): #если сумма разницы и элемента массива меньше элемента в массиве, #обновляем элемент в массиве if d + mr1[j] < mr[(d + mr1[j]) % 23]: mr[(d + mr1[j]) % 23] = d + mr1[j] #если разница меньше элемента в массиве, обновляем элемент if d < mr[d % 23]: mr[d % 23] = d # проходимся по всем элементам массива минимальных разностей for i in range(23): #если сумма с текущим элементом массива делится на 23, #выводим это значение if (s + mr[i]) % 23 == 0: print(s + mr[i])
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 17 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – максимально возможную сумму, соответствующую условиям задачи
Входные данные: Даны два входных файла: файл (27_5A.txt) и файл (27_5B.txt), каждый из которых содержит в первой строке количество троек . Каждая из следующих строк содержит три натуральных числа, не превышающих 1000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла .
f = open(’27_5B.txt’) n = int(f.readline()) s = 0 #массив для хранения минимальных разностей mr = [1000000000500000000000]*17 for i in range(n): #считываем пару чисел из файла a, b = map(int, f.readline().split()) #добавляем к сумме максимальное число из пары s += max(a, b) #разница между числами в паре d = abs(a-b) #копия массива минимальных разностей mr1 = mr[:] #проходимся по всем остаткам от деления на 17 for j in range(17): #если сумма разницы и элемента массива меньше элемента в массиве, #обновляем элемент в массиве if d + mr1[j] < mr[(d + mr1[j]) % 17]: mr[(d + mr1[j]) % 17] = d + mr1[j] #если разница меньше элемента в массиве, обновляем элемент if d < mr[d % 17]: mr[d % 17] = d #проверяем, делится ли сумма на 17 if s % 17 != 0: #если нет, вычитаем соответствующий элемент из массива минимальных разностей s -= mr[s % 17] #выводим максимально возможную сумму print(s)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел оканчивалась на 7 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – максимально возможную сумму, соответствующую условиям задачи.
Входные данные: Даны два входных файла: файл (27_4A.txt) и файл (27_4B.txt), каждый из которых содержит в первой строке количество троек . Каждая из следующих строк содержит три натуральных числа, не превышающих 1000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла .
f = open(’27_4B.txt’) n = int(f.readline()) s = 0 #массив для хранения минимальных разностей mr = [1000000000500000000000]*10 for i in range(n): #пара чисел из файла a, b = map(int, f.readline().split()) #добавление к сумме максимального числа из пары s += max(a, b) #разница между числами в паре d = abs(a - b) #копия массива минимальных разностей mr1 = mr[:] #проходимся по всем остаткам от деления на 10 for j in range(10): #если сумма разницы и элемента массива меньше элемента в массиве, #обновляем элемент в массиве if d + mr1[j] < mr[(d + mr1[j]) % 10]: mr[(d + mr1[j]) % 10] = d + mr1[j] #если разница меньше элемента в массиве, обновляем элемент if d < mr[d % 10]: mr[d % 10] = d #проходимся по всем элементам массива минимальных разностей for i in mr: #если сумма минус текущий элемент массива оканчивается на 7, #выводим это значение if (s - i) % 10 == 7: print(s - i)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из троек положительных целых чисел. Необходимо выбрать из каждой тройки ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 245 и при этом была нечетной и максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – максимальную возможную сумму, соответствующую условиям задачи
Входные данные: Даны два входных файла: файл (27_3A.txt) и файл (27_3B.txt), каждый из которых содержит в первой строке количество троек . Каждая из следующих строк содержит три натуральных числа, не превышающих 10000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла .
f = open(’27_3B.txt’) n = int(f.readline()) s = 0 mn = 100000050000000 #минимальная разность for i in range(n): a,b,c = f.readline().split() #чтение троек a, b, c = int(a), int(b), int(c) s += max(a, b, c) #сумма максимальных чисел троек #разность между максимальным и минимальным числами в тройке d1 = max(a, b, c) - min(a, b, c) #среднее число тройки mid = a+b+c-max(a, b, c) - min(a, b, c) #разность между максимальным и средним числами в тройке d2 = max(a, b, c) - mid #если первая разность не кратна 245 if d1%245!=0 and d1 % 2 != 0: mn = min(mn, d1) #обновляем минимальную разность #если вторая разность не кратна 245 if d2%245!=0 and d2 % 2 != 0: mn = min(mn, d2) #обновляем минимальную разность #если итоговая сумма не кратна 245 и нечетна, выводим ее if s % 245 != 0 and s % 2 != 0: print(s) else: #иначе отнимаем минимальную разность, чтобы получилось некратное число print(s-mn)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из троек положительных целых чисел. Необходимо выбрать из каждой тройки ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 152 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – минимально возможную сумму, соответствующую условиям задачи
Входные данные: Даны два входных файла: файл (27_2A.txt) и файл (27_2B.txt), каждый из которых содержит в первой строке количество троек . Каждая из следующих строк содержит три натуральных числа, не превышающих 1000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла .
f = open(’27_2B.txt’) n = int(f.readline()) s = 0 mn = 100000050000000 #минимальная разность for i in range(n): a,b,c = f.readline().split() a, b, c = int(a), int(b), int(c) s += min(a, b, c) #сумма минимальных чисел троек #разность между максимальным и минимальным числами в тройке d1 = max(a, b, c) - min(a, b, c) #среднее число тройки mid = a+b+c-max(a, b, c) - min(a, b, c) #разность между максимальным и средним числами в тройке d2 = max(a, b, c) - mid #если первая разность не кратна 152 if d1%152!=0: mn = min(mn, d1) #обновляем минимальную разность #если вторая разность не кратна 152 if d2%152!=0: mn = min(mn, d2) #обновляем минимальную разность #если итоговая сумма не кратна 152, выводим ее if s%152!=0: print(s) else: #иначе отнимаем минимальную разность, чтобы получилось некратное число print(s-mn)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из троек положительных целых чисел. Необходимо выбрать из каждой тройки ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 143 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – максимальную возможную сумму, соответствующую условиям задачи
Входные данные: Даны два входных файла: файл (27_1A.txt) и файл (27_1B.txt), каждый из которых содержит в первой строке количество троек . Каждая из следующих строк содержит три натуральных числа, не превышающих 10000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла , затем для файла .
f = open(’27_1B.txt’) n = int(f.readline()) s = 0 mn = 100000050000000 #минимальная разность for i in range(n): a,b,c = f.readline().split() #чтение троек a, b, c = int(a), int(b), int(c) s += max(a, b, c) #сумма максимальных чисел троек #разность между максимальным и минимальным числами в тройке d1 = max(a, b, c) - min(a, b, c) #среднее число тройки mid = a+b+c-max(a, b, c) - min(a, b, c) #разность между максимальным и средним числами в тройке d2 = max(a, b, c) - mid #если первая разность не кратна 143 if d1%143!=0: mn = min(mn, d1) #обновляем минимальную разность #если вторая разность не кратна 143 if d2%143!=0: mn = min(mn, d2) #обновляем минимальную разность #если итоговая сумма не кратна 143, выводим ее if s%143!=0: print(s) else: #иначе отнимаем минимальную разность, чтобы получилось некратное число print(s-mn)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 14 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — максимально возможную сумму, соответствующую условиям задачи.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Идея решения: Так как нужно получить минимальную разницу, то будем выбирать из каждой пары максимальное число, не обращая внимания на кратность. Если итоговая сумма получилась кратной 14, то необходимо заменить одно выбранное число другим числом из пары, при этом заменить нужно так, чтобы итоговая сумма уменьшилась минимально. Для этого на каждом шаге будем сохранять минимальную разницу между элементами пары, такую что разница не кратна 14, потому что если разница будет кратна 14, то замена не даст другой кратности у итоговой суммы.
f = open(’27B_pairs_6.txt’) n = int(f.readline()) s = 0 d = 14 # делитель # переменная для хранения минимальной разницы между числами пары mr = 1000000500000 for i in range(n): # считываем числа a, b = map(int, f.readline().split()) # для того чтобы итоговая сумма получилась минимальной берем минимальное из пары s += max(a, b) # обновляем минимальную разницу НЕ кратную 14 if (abs(a-b) < mr) and (abs(a-b) % d != 0): mr = abs(a-b) # если результирующая сумма получилась кратной 14, то прибавляем разницу if s % d == 0: s -= mr print(s)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 5 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — минимально возможную сумму, соответствующую условиям задачи.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Идея решения: Так как нужно получить минимальную разницу, то будем выбирать из каждой пары минимальное число, не обращая внимания на кратность. Если итоговая сумма получилась кратной 5, то необходимо заменить одно выбранное число другим числом из пары, при этом заменить нужно так, чтобы итоговая сумма увеличилась минимально. Для этого на каждом шаге будем сохранять минимальную разницу между элементами пары, такую что разница не кратна 5, потому что если разница будет кратна 5, то замена не даст другой кратности у итоговой суммы.
f = open(’27B_pairs_5.txt’) n = int(f.readline()) s = 0 d = 5 # делитель # переменная для хранения минимальной разницы между числами пары mr = 1000000500000 for i in range(n): # считываем числа a, b = map(int, f.readline().split()) # для того чтобы итоговая сумма получилась минимальной берем минимальное из пары s += min(a, b) # обновляем минимальную разницу НЕ кратную 5 if (abs(a-b) < mr) and (abs(a-b) % d != 0): mr = abs(a-b) # если результирующая сумма получилась кратной 5, то прибавляем разницу if s % d == 0: s += mr print(s)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 16 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — максимально возможную сумму, соответствующую условиям задачи.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Идея решения: Так как нужно получить минимальную разницу, то будем выбирать из каждой пары максимальное число, не обращая внимания на кратность. Если итоговая сумма получилась кратной 16, то необходимо заменить одно выбранное число другим числом из пары, при этом заменить нужно так, чтобы итоговая сумма уменьшилась минимально. Для этого на каждом шаге будем сохранять минимальную разницу между элементами пары, такую что разница не кратна 16, потому что если разница будет кратна 16, то замена не даст другой кратности у итоговой суммы.
f = open(’27A_pairs_4.txt’) n = int(f.readline()) s = 0 d = 16 # делитель # переменная для хранения минимальной разницы между числами пары mr = 1000000500000 for i in range(n): # считываем числа a, b = map(int, f.readline().split()) # для того чтобы итоговая сумма получилась минимальной берем минимальное из пары s += max(a, b) # обновляем минимальную разницу НЕ кратную 16 if (abs(a-b) < mr) and (abs(a-b) % d != 0): mr = abs(a-b) # если результирующая сумма получилась кратной 16, то прибавляем разницу if s % d == 0: s -= mr print(s)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 2 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — минимально возможную сумму, соответствующую условиям задачи.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Идея решения: Так как нужно получить минимальную разницу, то будем выбирать из каждой пары минимальное число, не обращая внимания на кратность. Если итоговая сумма получилась кратной 2, то необходимо заменить одно выбранное число другим числом из пары, при этом заменить нужно так, чтобы итоговая сумма увеличилась минимально. Для этого на каждом шаге будем сохранять минимальную разницу между элементами пары, такую что разница не кратна 2, потому что если разница будет кратна 2, то замена не даст другой кратности у итоговой суммы.
f = open(’27B_pairs_3.txt’) n = int(f.readline()) s = 0 d = 2 # делитель # переменная для хранения минимальной разницы между числами пары mr = 1000000500000 for i in range(n): # считываем числа a, b = map(int, f.readline().split()) # для того чтобы итоговая сумма получилась минимальной берем минимальное из пары s += min(a, b) # обновляем минимальную разницу НЕ кратную 2 if (abs(a-b) < mr) and (abs(a-b) % d != 0): mr = abs(a-b) # если результирующая сумма получилась кратной 2, то прибавляем разницу if s % d == 0: s += mr print(s)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 31 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — максимально возможную сумму, соответствующую условиям задачи.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Идея решения: Так как нужно получить минимальную разницу, то будем выбирать из каждой пары максимальное число, не обращая внимания на кратность. Если итоговая сумма получилась кратной 31, то необходимо заменить одно выбранное число другим числом из пары, при этом заменить нужно так, чтобы итоговая сумма уменьшилась минимально. Для этого на каждом шаге будем сохранять минимальную разницу между элементами пары, такую что разница не кратна 31, потому что если разница будет кратна 31, то замена не даст другой кратности у итоговой суммы.
f = open(’27B_pairs_2.txt’) n = int(f.readline()) s = 0 d = 31 # делитель # переменная для хранения минимальной разницы между числами пары mr = 1000000500000 for i in range(n): # считываем числа a, b = map(int, f.readline().split()) # для того чтобы итоговая сумма получилась минимальной берем минимальное из пары s += max(a, b) # обновляем минимальную разницу НЕ кратную 31 if (abs(a-b) < mr) and (abs(a-b) % d != 0): mr = abs(a-b) # если результирующая сумма получилась кратной 31, то прибавляем разницу if s % d == 0: s -= mr print(s)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 18 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — минимально возможную сумму, соответствующую условиям задачи.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Решение Идея решения: Так как нужно получить минимальную разницу, то будем выбирать из каждой пары минимальное число, не обращая внимания на кратность. Если итоговая сумма получилась кратной 18, то необходимо заменить одно выбранное число другим числом из пары, при этом заменить нужно так, чтобы итоговая сумма увеличилась минимально. Для этого на каждом шаге будем сохранять минимальную разницу между элементами пары, такую что разница не кратна 18, потому что если разница будет кратна 18, то замена не даст другой кратности у итоговой суммы.
f = open(’27B_pairs_1.txt’) n = int(f.readline()) s = 0 d = 18 # делитель # переменная для хранения минимальной разницы между числами пары mr = 1000000500000 for i in range(n): # считываем числа a, b = map(int, f.readline().split()) # для того чтобы итоговая сумма получилась минимальной берем минимальное из пары s += min(a, b) # обновляем минимальную разницу НЕ кратную 18 if (abs(a-b) < mr) and (abs(a-b) % d != 0): mr = abs(a-b) # если результирующая сумма получилась кратной 18, то прибавляем разницу if s % d == 0: s += mr print(s)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 119 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – минимально возможную сумму, соответствующую условиям задачи.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество пар N . Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.
Пример входного файла:
6
112 321
542 191
664 922
513 484
348 123
1 14
Для указанных входных данных значением искомой суммы должно быть число 2618.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’1.txt’) n = int(f.readline()) krat = 119 mr = [100000000500000000]*krat s = 0 for i in range(n): a,b = map(int, f.readline().split()) s += min(a, b) d = abs(a-b) mr1 = mr[:] #копия mr for j in range(krat): #берем разность и складываем с каждым элементом списка mr1 #сравниваем получившуюся сумму с mr #если она меньше, то записываем данную сумму в mr if d + mr1[j] < mr[(d+mr[j]) % krat]: mr[(d+mr[j]) % krat] = d + mr1[j] #проверка, что если разность меньше соответствующего элемента в списке #то записываем эту разность в список if d < mr[d % krat]: mr[d % krat] = d #Если сумма s не делится на krat, то сумма корректируется #путем добавления значения из mr[krat - s % krat] if s % krat != 0: s += mr[krat - s % krat] print(s)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 123 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – максимально возможную сумму, соответствующую условиям задачи.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество пар N . Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.
Пример входного файла:
6
112 321
542 191
664 922
513 484
348 123
12 14
Для указанных входных данных значением искомой суммы должно быть число 1968.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’1.txt’) n = int(f.readline()) krat = 123 mr = [100000000500000000]*krat s = 0 for i in range(n): a,b = map(int, f.readline().split()) s += max(a, b) d = abs(a-b) mr1 = mr[:] #копия mr for j in range(krat): #берем разность и складываем с каждым элементом списка mr1 #сравниваем получившуюся сумму с mr #если она меньше, то записываем данную сумму в mr if d + mr1[j] < mr[(d+mr[j]) % krat]: mr[(d+mr[j]) % krat] = d + mr1[j] #проверка, что если разность меньше соответствующего элемента в списке #то записываем эту разность в список if d < mr[d % krat]: mr[d % krat] = d #Если сумма s не делится на krat, то сумма корректируется #путем вычитания значения из mr[s % krat] if s % krat != 0: s -= mr[s % krat] print(s)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 43 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – минимально возможную сумму, соответствующую условиям задачи.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество пар N . Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.
Пример входного файла:
6
11 31
52 11
64 92
53 44
38 23
1 1
Для указанных входных данных значением искомой суммы должно быть число 215.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’1.txt’) n = int(f.readline()) krat = 43 mr = [100000000500000000]*krat s = 0 for i in range(n): a,b = map(int, f.readline().split()) s += min(a, b) d = abs(a-b) mr1 = mr[:] #копия mr for j in range(krat): #берем разность и складываем с каждым элементом списка mr1 #сравниваем получившуюся сумму с mr #если она меньше, то записываем данную сумму в mr if d + mr1[j] < mr[(d+mr[j]) % krat]: mr[(d+mr[j]) % krat] = d + mr1[j] #проверка, что если разность меньше соответствующего элемента в списке #то записываем эту разность в список if d < mr[d % krat]: mr[d % krat] = d #Если сумма s не делится на krat, то сумма корректируется #путем добавления значения из mr[krat - s % krat] if s % krat != 0: s += mr[krat - s % krat] print(s)
Ошибка.
Попробуйте повторить позже
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 11 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – максимально возможную сумму, соответствующую условиям задачи.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество пар N . Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.
Пример входного файла:
6
1 3
5 11
6 9
5 4
3 3
1 1
Для указанных входных данных значением искомой суммы должно быть число 22.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’1.txt’) n = int(f.readline()) krat = 11 mr = [100000000500000000]*krat s = 0 for i in range(n): a,b = map(int, f.readline().split()) s += max(a, b) d = abs(a-b) mr1 = mr[:] #копия mr for j in range(krat): #берем разность и складываем с каждым элементом списка mr1 #сравниваем получившуюся сумму с mr #если она меньше, то записываем данную сумму в mr if d + mr1[j] < mr[(d+mr[j]) % krat]: mr[(d+mr[j]) % krat] = d + mr1[j] #проверка, что если разность меньше соответствующего элемента в списке #то записываем эту разность в список if d < mr[d % krat]: mr[d % krat] = d #Если сумма s не делится на krat, то сумма корректируется #путем вычитания значения из mr[s % krat] if s % krat != 0: s -= mr[s % krat] print(s)