Набор данных состоит из пар натуральных чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась
Входные данные.
Первая строка входного файла содержит
Пример организации исходных данных во входном файле:
6
1 3
5 12
6 9
5 4
3 3
1 1
Для указанных данных искомая сумма
В ответе укажите два числа: сначала значение искомой суммы для
Предупреждение: для обработки
Ответ:
Последовательно считывая данные из файла, будем прибавлять к сумме минимальное число в паре. Если сумма чисел делится
Приведём решение задачи на языке Pascal.
var
x, y: integer;
n: integer;
sum: integer;
dif1, dif2, dif3, dif4: integer;
f: text;
begin
assign(f,'C:\27b.txt');
reset(f);
readln(f, n);
sum := 0;
dif1 := 20001;
dif2 := 20001;
dif3 := 20001;
dif4 := 20001;
while not eof(f) do begin
readln(f, x, y);
if x > y then
sum := sum + y
else
sum := sum + x;
if (abs(x-y) mod 3 = 1) and (abs(x-y) < dif1) then begin
dif2 := dif1;
dif1 := abs(x-y);
end
else if (abs(x-y) mod 3 = 1) and (abs(x-y) < dif2) then
dif2 := abs(x-y)
else if (abs(x-y) mod 3 = 2) and (abs(x-y) < dif3) then begin
dif4 := dif3;
dif3 := abs(x-y);
end
else if (abs(x-y) mod 3 = 2) and (abs(x-y) < dif4) then
dif4 := abs(x-y);
end;
if sum mod 3 = 0 then
writeln(sum)
else if (sum mod 3 = 1) then
if ((sum + dif3) < (sum + dif1 + dif2)) then
writeln(sum + dif3)
else
writeln(sum + dif1 + dif2)
else if (sum mod 3 = 2) then
if ((sum + dif1) < (sum + dif3 + dif4)) then
writeln(sum + dif1)
else
writeln(sum + dif3 + dif4)
end.
В результате работы данного алгоритма при вводе данных из
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение на языке Python.
f = open("inf_22_10_20_27b.txt")
s = f.readlines()
n = int(s[0])
sum = 0
dif1 = 20001
dif2 = 20001
dif3 = 20001
dif4 = 20001
for i in range(1, n + 1):
x, y = map(int, s[i].split())
if x > y: sum += y
else: sum += x
if (abs(x-y) % 3 == 1) and (abs(x-y) < dif1):
dif2 = dif1
dif1 = abs(x - y)
elif (abs(x-y) % 3 == 1) and (abs(x-y) < dif2): dif2 = abs(x-y)
elif (abs(x-y) % 3 == 2) and (abs(x-y) < dif3):
dif4 = dif3
dif3 = abs(x - y)
elif (abs(x-y) % 3 == 2) and (abs(x-y) < dif4): dif4 = abs(x-y)
if sum % 3 == 0:
print(sum)
elif sum % 3 == 1:
if (sum + dif3) < (sum + dif1 + dif2):
print(sum + dif3)
else: print(sum + dif1 + dif2)
elif sum % 3 == 2:
if ((sum + dif1) < (sum + dif3 + dif4)):
print(sum + dif1)
else:
print(sum + dif3 + dif4)

