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

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

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

Условие

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

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

Итоговая оценка выставляется как максимальная из оценок за задания А и Б. Если решение одного из заданий не представлено, то считается, что оценка за это задание составляет 0 баллов.

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

Перед программой укажите версию языка программирования. Обязательно укажите, что программа является решением задания А.Максимальная оценка за выполнение задания А - 2 балла. Б. Напишите программу для решения поставленной задачи, которая будет эффективна как по времени, так и по памяти (или хотя бы по одной из этих характеристик).Программа считается эффективной по времени, если время работы программы пропорционально количеству элементов последовательности N, т. е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз.

Обязательно укажите, что программа является решением задания Б.Максимальная оценка за правильную программу, эффективную по времени и по памяти, - 4 балла.

Максимальная оценка за правильную программу, эффективную по времени, но неэффективную по памяти, - 3 балла.

Напоминаем! Не забудьте указать, к какому заданию относится каждая из представленных Вами программ.

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

На вход программе в первой строке подаётся количество чисел N. В каждой из последующих N строк записано одно натуральное число, не превышающее 1000. В последней строке записано контрольное значение. Пример входных данных: 6100833451990145 Пример выходных данных для приведённого выше примера входных данных:Вычисленное контрольное значение: 145Контроль пройден Пояснения для проверяющих.1. Задание Б является усложнением задания А. Если в качестве решения задания Б представлено решение задания А, то согласно приведённым ниже критериям, его оценка будет такой же, как если бы это решение было представлено в качестве решения задания А.2. Два задания и, соответственно, возможность для экзаменуемого представить две программы дают ученику возможность (при его желании) сначала написать менее сложное и менее эффективное решение (задание А), которое даёт ему право получить два балла, а затем приступить к поиску более эффективного решения. 3. Каждая из программ, представленных экзаменуемым (но не более двух), оценивается по нижеследующим критериям. В качестве итоговой оценки берётся наибольшая из двух оценок.

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

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

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

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

    Решение. Сумма двух чисел нечетна, если одно из них — чётное, а другое — нечетное. Программа, вычисляющая контрольное значение, читает все входные данные один раз, не запоминая их в массиве. Для прочитанного фрагмента входной последовательности программа хранит значения двух величин: М0 - самое большое чётное число; M1 - самое большое нечётное число. После того как все данные прочитаны, искомое контрольное значение вычисляется как сумма M0 + M1. Ниже приведены реализующие этот алгоритм программы на языке Паскаль, а также на алгоритмическом языке. Допускаются решения, записанные на других языках программирования. Пример правильной и эффективной программы на языке Паскаль.var R,M0,M1,res,i,N,dat: longint;begin M0 := 0; M1 := 0;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>0)…

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

  4. then max := a[i]+a[j]; readln(R)…

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

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

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

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