задание 27 номер 6249

Задание 27 номер 6249

Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — максимально возможную сумму, соответствующую условиям задачи.

Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

Пример организации исходных данных во входном файле:

Для указанных входных данных значением искомой суммы должно быть число 32.

В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.

Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

Последовательно считывая данные из файла, будем прибавлять к сумме максимальное число в паре. Также заметим, что в случае, если получившееся в результате суммирования максимальных чисел во всех парах число будет кратно трём, достаточно будет вычесть из этой суммы минимальную разницу между какими-либо двумя числами. Для этого при считывании пар помимо максимального числа в каждой паре будем искать минимальную разницу среди пар, не кратную трём.

Приведём решение задачи на языке Pascal.

while not eof(f) do begin

if sum mod 3 <> 0 then

В результате работы данного алгоритма при вводе данных из файла A ответ — 127127, из файла B — 399762080.

Приведём решение Романа Князева на языке Python.

Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.

Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — минимально возможную сумму, соответствующую условиям задачи.

Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

Пример организации исходных данных во входном файле:

Для указанных входных данных значением искомой суммы должно быть число 20.

В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.

Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

Последовательно считывая данные из файла, будем прибавлять к сумме минимальное число в паре. Также заметим, что в случае, если получившееся в результате суммирование минимальных чисел во всех парах число будет кратно трём, достаточно будет прибавить к этой сумме минимальную разницу между какими-либо двумя числами. Для этого при считывании пар помимо минимального числа в каждой паре будем искать минимальную разницу среди пар, не кратную трём.

Приведём решение задачи на языке Pascal.

while not eof(f) do begin

if x 0) then mindif := abs(x-y);

if sum mod 3 <> 0 then

В результате работы данного алгоритма при вводе данных из файла A ответ — 67088, из файла B — 200157478.

Приведём решение Романа Князева на языке Python.

Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.

Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 5 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — максимально возможную сумму, соответствующую условиям задачи.

Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

Пример организации исходных данных во входном файле:

Для указанных входных данных значением искомой суммы должно быть число 33.

В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.

Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

Последовательно считывая данные из файла, будем прибавлять к сумме максимальное число в паре. Также заметим, что в случае, если получившееся в результате суммирование максимальных чисел во всех парах число будет кратно пяти, достаточно будет вычесть из этой суммы минимальную разницу между какими-либо двумя числами. Для этого при считывании пар помимо максимального числа в каждой паре будем искать минимальную разницу среди пар, не кратную пяти.

Приведём решение задачи на языке Pascal.

while not eof(f) do begin

if sum mod 5 <> 0 then

В результате работы данного алгоритма при вводе данных из файла A ответ — 118951, из файла B — 394491666.

Приведём решение Романа Князева на языке Python.

Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.

Последовательность натуральных чисел характеризуется числом Х — наибольшим числом, кратным 14 и являющимся произведением двух элементов последовательности с различными номерами. Гарантируется, что хотя бы одно такое произведение в последовательности есть.

Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество чисел N (1 ≤ N ≤ 100000). В каждой из последующих N строк записано одно натуральное число, не превышающее 1000.

Пример организации исходных данных во входном файле:

Пример выходных данных для приведённого выше примера входных данных:

В ответе укажите два числа: сначала значение искомого произведения для файла А, затем для файла B.

Произведение двух чисел делится на 14, если:

— один из сомножителей делится на 14 (второй может быть любым) либо

— ни один из сомножителей не делится на 14, но один из сомножителей делится на 7, а другой – на 2.

Поэтому программа, вычисляющая число X, может работать так.

Программа читает все входные данные один раз, не запоминая все данные в массиве. Программа для прочитанного фрагмента входной последовательности хранит значения четырёх величин:

М7 – самое большое число, кратное 7, но не кратное 2;

M2 – самое большое число, кратное 2, но не кратное 7;

M14 – самое большое число, кратное 14;

МAX – самое большое число среди всех элементов последовательности, отличное от М14 (если число М14 встретилось более одного раза и оно же является максимальным, то MAX = M14).

После того как все данные прочитаны, искомое число X вычисляется как максимум из произведений М14*MAX и М7*М2.

Ниже приведён пример программы на языке Паскаль, которая реализует описанный алгоритм.

Приведём решение задачи на языке Pascal.

var M7,M2,M14,MAX,dat,res,i,N: longint; var s: string;

if ((dat mod 7) = 0) and ((dat mod 2) > 0) and (dat > M7) then

if ((dat mod 2) = 0) and ((dat mod 7) > 0) and (dat > M2) then

if (dat mod 14 = 0) and (dat > M14) then

if M14 > MAX then MAX := M14;

if (M7*M2 Ответ: 447552&994000

По каналу связи передавалась последовательность положительных целых чисел, все числа не превышают 1000. Количество чисел известно. Затем передаётся контрольное значение последовательности — наибольшее число R, удовлетворяющее следующим условиям:

1) R — произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных элементов последовательности, равных по величине, допускаются);

Если такого числа R нет, то контрольное значение полагается равным 0. В результате помех при передаче как сами числа, так и контрольное значение могут быть искажены.

Программа должна напечатать одно число — вычисленное контрольное значение, соответствующую условиям задачи.

Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество чисел N (1 ≤ N ≤ 100000). В каждой из последующих N строк записано одно натуральное число, не превышающее 1000.

Пример организации исходных данных во входном файле:

Пример выходных данных для приведённого выше примера входных данных:

В ответе укажите два числа: сначала значение искомое контрольное значение для файла А, затем для файла B.

Произведение двух чисел делится на 14, если:

— один из сомножителей делится на 14 (второй может быть любым) либо

— ни один из сомножителей не делится на 14. причём один из сомножителей делится на 2, а другой — на 7.

Поэтому программа, вычисляющая кодовое число, может работать так.

Программа читает все входные данные один раз, не запоминая все данные в массиве. Программа для прочитанного фрагмента входной последовательности хранит значения четырех величин:

М2 — самое большое чётное число, не кратное 7;

М7 — самое большое число, кратное 7. но не кратное 2;

М14 — самое большое число, кратное 14;

МАХ — самое большое число среди всех элементов последовательности, отличное от M14 (если число М14 встретилось более одного раза и оно же является максимальным, то МАХ = M14).

После того как все данные прочитаны, искомое кодовое слово вычисляется как максимум из произведений M14*МАХ и М2*М7.

Ниже приведён пример программы на языке Паскаль, которая реализует описанный алгоритм.

Кроме того, приведён пример программы на языке Бейсик, которая правильно решает задачу, но использует алгоритм, немного отличающийся от описанного выше. Возможны и другие правильные алгоритмы. Допускаются решения, записанные на других языках программирования.

Приведём решение задачи на языке Pascal.

var M2, M7, M14, MAX, dat, res, N: longint; f: text;

M2 := 0; M7 := 0; M14 := 0; MAX := 0;

while not eof(f) do begin

if ((dat mod 2) = 0) and ((dat mod 7) >0) and (dat > M2) then M2 := dat;

if ((dat mod 7) = 0) and ((dat mod 2) > 0) and (dat > M7) then M7 := dat;

if (dat mod 14 = 0) and (dat > M14) then begin

Источник

Задание 27 номер 6249

Набор данных состоит из нечётного количества пар натуральных чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы чётность суммы выбранных чисел совпадала с чётностью большинства выбранных чисел и при этом сумма выбранных чисел была как можно меньше. Определите минимальную сумму, которую можно получить при таком выборе. Гарантируется, что удовлетворяющий условиям выбор возможен.

Первая строка входного файла содержит число N — общее количество пар в наборе. Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

Пример входного файла:

Для указанных данных надо выбрать числа 8, 5, 3, 2 и 9. Большинство из них нечётны, сумма выбранных чисел равна 27 и тоже нечётна. В ответе надо записать число 27.

Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала значение искомой суммы для файла A, затем для файла B.

Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

Последовательно считывая данные из файла, будем прибавлять к сумме значение минимального числа в паре, при этом, если число чётное, будем увеличивать значение переменной count0 на единицу, если нечётное — увеличивать значение переменной count1 на единицу. Поскольку может возникнуть ситуация, когда, например, получившаяся сумма будет чётной, а количество чётных чисел будет меньше количества нечётных чисел и будет отличаться от количества нечётных чисел на единицу, будем находить две минимальных разницы для ситуации, когда будет убираться два чётных числа (переменные dif3 и dif4), и две минимальных разницы для ситуации, когда будет убираться два нечётных числа (переменные dif1 и dif2).

Приведём решение задачи на языке Pascal.

В результате работы данного алгоритма при вводе данных из файла A ответ — 61772, из файла B — 18484085.

Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.

Источник

Задание 27 номер 6249

Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — максимально возможную сумму, соответствующую условиям задачи.

Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

Пример организации исходных данных во входном файле:

Для указанных входных данных значением искомой суммы должно быть число 32.

В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.

Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

Последовательно считывая данные из файла, будем прибавлять к сумме максимальное число в паре. Также заметим, что в случае, если получившееся в результате суммирования максимальных чисел во всех парах число будет кратно трём, достаточно будет вычесть из этой суммы минимальную разницу между какими-либо двумя числами. Для этого при считывании пар помимо максимального числа в каждой паре будем искать минимальную разницу среди пар, не кратную трём.

Приведём решение задачи на языке Pascal.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *