.04 Пары/тройки чисел, выбрать из каждой, кратность
Ошибка.
Попробуйте повторить позже
В текстовом файле записан набор пар натуральных чисел, не превышающих . Необходимо выбрать из набора
некоторые пары так, чтобы сумма всех чисел в выбранных парах при делении на
давала остаток
. Какую
наименьшую сумму чисел во всех выбранных парах можно при этом получить?
Пример входного файла:
Ответ для данного примера:
Решение №1
f = open(’11.txt’) n = int(f.readline()) mp = [10 ** 10] * 54 # Список для хранения минимальных пар по остаткам for i in range(n): a, b = map(int, f.readline().split()) # Считываем числа p = a + b # Сумма элементов пары mp1 = mp[:] # Создаём копию списка пар for j in range(54): # Ищем минимальную сумму нескольких пар if p + mp1[j] < mp[(p + mp1[j]) % 54]: mp[(p + mp1[j]) % 54] = p + mp1[j] # Если текущая сумма пары меньше сумм пар в списке if p < mp[p % 54]: mp[p % 54] = p print(mp[37]) # Выводим минимальную сумму пар с остатком 37
Решение №2
# Не выбрать пару равносильно вместо пары взять 0, # поэтому решим классическую задачу для пар чисел, # где первое число - сумма входных чисел, а второе - 0 modul = 54 def fun(a, a_new, x): for j in range(modul): k = (a[j] + x) % modul a_new[k] = min(a_new[k], a[j] + x) a = [100000000000000000] * modul a[0] = 0 f = open(’11.txt’) n = int(f.readline()) for i in range(n): x, y = map(int, f.readline().split()) a_new = [100000000000000000] * modul fun(a, a_new, x + y) fun(a, a_new, 0) for j in range(modul): a[j] = a_new[j] print(a[37])
Специальные программы

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

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

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

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

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

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