Присоединиться

11 класс·высокий уровень

После окончания эксперимента передаётся контрольное значение

Условие

По каналу связи передаются положительные целые числа, не превышающие 1000, - результаты измерений, полученных в ходе эксперимента (количество измерений известно заранее). После окончания эксперимента передаётся контрольное значение - наименьшее число R, удовлетворяющее следующим условиям:

  1. R — сумма двух различных переданных элементов последовательности («различные» означает, что нельзя просто удваивать переданные числа, суммы различных, но равных по величине элементов допускаются);2) R — нечётное число. Если чисел, соответствующих приведённым условиям, нет, считается, что R = -1. В результате помех при передаче как сами числа, так и контрольное значение могут быть искажены.

Напишите эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования, например, Free Pascal 2.6.4), которая будет проверять правильность контрольного значения. Программа должна напечатать отчёт по следующей форме: Вычисленное контрольное значение: …Контроль пройден (или Контроль не пройден) Если удовлетворяющее условию контрольное значение определить невозможно (то есть R = -1), то выводится только фраза «Контроль не пройден».Перед текстом программы кратко опишите используемый Вами алгоритм решения.

На вход программе в первой строке подаётся количество чисел N. В каждой из последующих N строк записано одно натуральное число, не превышающее 1000. В последней строке записано контрольное значение. Пример входных данных: 610833451920027 Пример выходных данных для приведённого выше примера входных данных:Вычисленное контрольное значение: 27Контроль пройден Говоря неформально, 4 балла ставится за эффективную и правильно работающую программу, которая, возможно, содержит до трех синтаксических ошибок (описок). 3 балла ставится в случае, когда фактически задача решена, ноколичество описок более трех (но не более пяти) и допущено не более одной содержательной ошибки, не позволяющей усомниться в том, что экзаменуемый правильно придумал алгоритм (список допустимых ошибок приведен ниже). 2 балла ставится, если в дополнение к неточностям, которые перечислены выше, программа работает неэффективно по времени и/или допущено до трех упомянутых выше содержательных ошибок. Количество допустимых описок — до семи. 1 балл ставится, если программа написана неверно, но из описания алгоритма и общей структуры программы видно, что экзаменуемый в целом правильно представляет путь решения задачи. Далее сказанное уточнено.

Формат задания

Развёрнутый ответ: короткого ответа здесь нет — оценивается само рассуждение. Разбор откроется после входа.

Решение по шагам

  1. Как рассуждать

    Решение. Сумма двух чисел нечётна, если одно из них — чётное, а другое — нечётное. Программа, вычисляющая контрольное значение, читает все входные данные один раз, не запоминая их в массиве. Для прочитанного фрагмента входной последовательности программа хранит значения двух величин: М0 — наименьшее чётное число;M1 — наименьшее нечётное число. После того как все данные прочитаны, искомое контрольное значение вычисляется как сумма M0 + M1. Ниже приведены реализующие этот алгоритм программы на языке Паскаль, а также на алгоритмическом языке. Допускаются решения, записанные на других языках программирования. Пример правильной и эффективной программы на языке Паскаль. var M0,M1,res,i,N,dat: longint;beginM0 := 1002;M1 := 1001;readln(N);for i := 1 to N dobeginreadln(dat);if (dat mod 2 =

Осталось ещё 4 шага

  1. and (dat < M0) thenM0 := dat;if (dat mod 2 <>…

  2. and (dat < M1) thenM1 := dat;end;if (M0 <=…

  3. thenres := M0+M1else res := -1;readln(R);if…

  4. and (R = res)then writeln('Контроль…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Программирование»

После окончания эксперимента передаётся контрольное значение — решение с объяснением | Lom Ai