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

Информатика·Задания Д27 C4. Программирование·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) пропущен или неверно указан знак пунктуации; 2) неверно написано или пропущено зарезервированное слово языка программирования; 3) не описана или неверно описана переменная; 4) применяется операция, недопустимая для соответствующего типа данных. Если одна и та же ошибка встречается несколько раз, это считается за одну ошибку. | 4 | Не выполнены условия, позволяющие поставить 4 балла. Программа в целом работает правильно для любых входных данных произвольного размера. Время работы пропорционально количеству введённых чисел, правильно указано, какие величины должны вычисляться по ходу чтения элементов последовательности чисел. Количество синтаксических ошибок (описок) указанных выше видов — не более пяти. Используемая память, возможно, зависит от количества прочитанных чисел (например, входные данные запоминаются в массиве или другой структуре данных (контейнер priority_queue, vector, set или map в С++)). Допускается ошибка при вводе данных, неверный или неполный вывод результатов или неверная работа программыв «экзотических» ситуациях. Кроме того, допускается наличие одной ошибки, принадлежащей к одному из следующих видов ошибок: 1) ошибка при инициализации минимумов; 2) неверно обрабатывается ситуация, когда один или несколько миниимумов не определены; 3) допущен выход за границу массива; 4) используется знак < вместо <=, or вместо and и т. п. | 3 | Не выполнены условия, позволяющие поставить 3 или 4 балла. Программа работает в целом верно, эффективно или нет, но, в реализации алгоритма есть до двух содержательных ошибок, допустимые виды ошибок перечислены в критериях на 3 балла. Количество синтаксических описок не должно быть более девяти. Программа может быть неэффективна по времени. Например, все числа запоминаются в массиве и перебираются все возможные пары элементов последовательности:min := 2001;for i := 1 to N - 1 do beginfor j := i + 1 to N do beginif ((a[i]+a[j]) mod 2 = 1) and(a[i]+a[j] < min) then min := a[i]+a[j];endend; | 2 | Не выполнены условия, позволяющие поставить 2, 3 или 4 балла. Из описания алгоритма или общей структуры программы видно, что экзаменуемый в целом правильно представляет путь решения задачи независимо от эффективности. При этом программа может отсутствовать или быть представленной отдельными фрагментами, без ограничений на количество ошибок. | 1 | Не выполнены критерии, позволяющие поставить 1, 2, 3 или 4 балла | 0 | Максимальный балл | 4 |

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

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

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

  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 шага — откроются после входа:

  • Шаг 2
  • Шаг 3
  • Шаг 4
  • Шаг 5
Получить полное решение

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

Другие задачи по теме «Задания Д27 C4. Программирование»

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