Набор данных состоит из пар натуральных чисел. Необходимо выбрать из
Условие
Набор данных состоит из пар натуральных чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 3 и при этом была минимально возможной.
Входные данные.
Файл AФайл BПервая строка входного файла содержит число N — общее количество пар в наборе. Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.Пример организации исходных данных во входном файле:61 35 126 95 43 31 1Для указанных данных искомая сумма равна 21.В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B. Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго. Ответ:
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Решение. Последовательно считывая данные из файла, будем прибавлять к сумме минимальное число в паре. Если сумма чисел делится на 3 с остатком 1, то, чтобы она делилась на 3, к этой сумме необходимо прибавить либо разницу между числами в паре, делящуюся на 3 с остатком 2, либо два раза прибавить к этой сумме разницу между числами в паре, делящуюся на 3 с остатком
Осталось ещё 13 шагов
Также заметим, что если сумма чисел делится…
Значит, необходимо искать два числа…
and (abs(x-y) < dif1) then begin dif2 :=…
and (abs(x-y) < dif2) then dif2 := abs(x-y)…
and (abs(x-y) < dif3) then begin dif4 :=…
and (abs(x-y) < dif4) then dif4 := abs(x-y)…
then if ((sum + dif3) < (sum + dif1 + dif2))…
then if ((sum + dif1) < (sum + dif3 + dif4))…
Примечание. Путь к файлу необходимо указать…
and (abs(x-y) < dif1): dif2 = dif1 dif1 =…
and (abs(x-y) < dif2): dif2 = abs(x-y) elif…
and (abs(x-y) < dif3): dif4 = dif3 dif3 =…
and (abs(x-y) < dif4): dif4 = abs(x-y)if sum…
Бесплатно · займёт минуту