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

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

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

Условие

По каналу связи передаются положительные целые числа, не превышающие 1000 - результаты измерений, полученных в ходе эксперимента (количество измерений N известно заранее, гарантируется, что N > 2). После окончания эксперимента передаётся контрольное значение - наименьшее число R, удовлетворяющее следующим условиям.1. R - сумма двух различных переданных элементов последовательности («различные» означает, что нельзя просто удваивать переданные числа, суммы различных, но равных по величине элементов допускаются).2. R кратно 3.3. Если в последовательности нет двух чисел, сумма которых кратна 3, контрольное значение считается равным 1.В результате помех при передаче как сами числа, так и контрольное значение могут быть искажены.Напишите эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования, например, Free Pascal 2.6.4), которая будет проверять правильность контрольного значения.Программа должна напечатать отчёт по следующей форме:Вычисленное контрольное значение: …Контроль пройден (или Контроль не пройден) Перед текстом программы кратко опишите используемый вами алгоритм решения.На вход программе в первой строке подаётся количество чисел N (N > 2). В каждой из последующих N строк записано одно натуральное число, не превышающее 1000. В последней строке записано контрольное значение. Пример входных данных:6100833145198427 Пример выходных данных для приведённого выше примера входных данных:Вычисленное контрольное значение: 27Контроль пройден Критерии оценивания выполнения задания | Баллы | Не выполнены критерии, позволяющие поставить 1, 2, 3 или 4 балла. | 0 | Не выполнены условия, позволяющие поставить 2, 3 или 4 балла. Программа работает правильно в отдельных частных случаях. Из описания алгоритма и общей структуры программы видно, что экзаменуемый в целом правильно представляет путь решения задачи. Допускается любое количество «описок». | 1 | Не выполнены условия, позволяющие поставить 3 или 4 балла.Программа работает в целом верно, эффективно или нет, но в реализации алгоритма есть до трёх содержательных ошибок, допустимые виды ошибок перечислены в критериях на 3 балла.Количество синтаксических «описок» не должно быть более семи.Программа может быть неэффективна по времени. Например, все числа запоминаются в массиве и перебираются все возможные пары элементов последовательности:max := 0; for i := 1 to N - 1 do begin for j := i + 1 to N do begin if ((a[i]+a[j]) mod 3 = 0) and (a[i]+a[j] > max) then max := a[i]+a[j]; endend; | 2 | Не выполнены условия, позволяющие поставить 4 балла. Программа в целом работает правильно для любых входных данных произвольного размера. Время работы пропорционально количеству введённых чисел, правильно указано, какие величины должны вычисляться по ходу чтения элементов последовательности чисел. Количество синтаксических ошибок («описок») указанных выше видов - не более пяти. Используемая память, возможно, зависит от количества прочитанных чисел (например, входные данные запоминаются в массиве, контейнере STL в C++ или другой аналогичной структуре данных). Допускается ошибка при вводе данных, неверный или неполный вывод результатов или неверная работа программы в особых редких случаях. Кроме того, допускается наличие одной ошибки, принадлежащей к одному из следующих видов ошибок. 1. Ошибка при инициализации максимумов. 2. Неверно обрабатывается ситуация, когда один или несколько максимумов не определены. 3. Неверно определяется контрольное значение в ситуации, когда нет сумм, кратных 3. 4. Допущен выход за границу массива. 5. Используется знак < вместо <=, or вместо and и т. п. | 3 | Программа правильно работает для любых входных данных произвольного размера. Используемая память не зависит от количества прочитанных чисел, а время работы пропорционально этому количеству. Допускается наличие в тексте программы до трёх синтаксических ошибок одного из следующих видов: 1) пропущен или неверно указан знак пунктуации, 2) неверно написано или пропущено зарезервированное слово языка программирования, 3) не описана или неверно описана переменная, 4) применяется операция, недопустимая для соответствующего типа данных. Если одна и та же ошибка встречается несколько раз, это считается за одну ошибку. | 4 | Максимальный балл | 4 |

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

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

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

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

    Сумма двух чисел может быть кратна 3 в двух случаях: либо оба слагаемых кратны 3, либо остаток от деления на 3 одного из них равен 1, а другого - 2.Программа, вычисляющая контрольное значение, читает все входные данные один раз, не запоминая их в массиве.

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

  1. Шаг 2

  2. Шаг 3

  3. Шаг 4

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

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

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

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