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

Информатика·Задания Д27 C4. Программирование·11 класс

Количество чисел известно, но может быть очень велико. Затем передаётся

Условие

По каналу связи передаётся последовательность положительных целых чисел, все числа не превышают 1000. Количество чисел известно, но может быть очень велико. Затем передаётся контрольное значение последовательности — наибольшее число R, удовлетворяющее следующим условиям: 1) R — произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных элементов последовательности, равных по величине, допускаются); 2) R делится на 22. Если такого числа R нет, то контрольное значение полагается равным 0. В результате помех при передаче как сами числа, так и контрольное значение могут быть искажены. Напишите эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет проверять правильность контрольного значения. Программа должна напечатать отчёт по следующей форме: Вычисленное контрольное значение: ... Контроль пройден (или — Контроль не пройден) Перед текстом программы кратко опишите используемый Вами алгоритм решения. На вход программе в первой строке подаётся количество чисел N. В каждой из последующих N строк записано одно натуральное число, не превышающее 1000. В последней строке записано контрольное значение. Пример входных данных: 655 997 22 7 9400 22000 Пример выходных данных для приведённого выше примера входных данных: Вычисленное контрольное значение: 22000 Контроль пройден Критерии оценивания выполнения задания | Баллы | Программа правильно работает для любых входных данных произвольного размера. Используемая память не зависит от количества прочитанных чисел, а время работы пропорционально этому количеству. Допускается наличие в тексте программы до трёх синтаксических ошибок одного из следующих видов: - пропущен или неверно указан знак пунктуации;- неверно написано или пропущено зарезервированное слово языка программирования;- не описана или неверно описана переменная;- применяется операция, недопустимая для соответствующего типа данных (если одна и та же ошибка встречается несколько раз, то это считается за одну ошибку) | 4 | Не выполнены условия, позволяющие поставить 4 балла. Программа в целом работает правильно для любых входных данных произвольного размера. Время работы пропорционально количеству введённых чисел.Количество синтаксических ошибок («описок») указанных выше видов - не более пяти. Используемая память, возможно, зависит от количества прочитанных чисел (например, входные данные запоминаются в массиве или другой структуре данных (контейнер priority queue, vector, set или map в С++)). Допускается ошибка при вводе данных, неверный или неполный вывод результатов или неверная работа программы в «экзотических» ситуациях. Например, при использовании 16-битного целого (integer в BPascal или Qbasic) умножаются два числа этого типа (результат по условию может не помещаться в 16 бит). Кроме того, допускается наличие одной ошибки, принадлежащей к одному из следующих видов ошибок. 1) Ошибка при инициализации максимумов.2) Неверно обрабатывается ситуация, когда один или несколько максимумов не определены.3) Неверно обрабатывается ситуация, когда максимальное произведение получается умножением одинаковых чисел (но разных элементов входной последовательности).4) При вычислении максимумов учитываются произведения вида a[i]*a[i],5) Допущен выход за границу массива.6) Допущена ошибка в реализации алгоритма сортировки.7) Используется знак "<" вместо "<=", "or" вместо "and" и т.п. | 3 | Не выполнены условия, позволяющие поставить 3 или 4 балла. Программа работает в целом верно, эффективно или нет, но в реализации алгоритма содержится до двух содержательных ошибок, допустимые виды ошибок перечислены в критериях на 3 балла. Количество синтаксических «описок» не должно быть более семи. Программа может быть неэффективна по времени. Например, все числа запоминаются в массиве (ниже п - количество прочитанных чисел), и перебираются все возможные пары элементов последовательности. Например, так: max := 0;for i := 1 to n - 1 do for j := i + 1 to n doif ( (a[i]*a [ j] ) mod 22 = 0) and t(a[i]a[j]) > max) then max := a[i] a [ j] ; | 2 | He выполнены условия, позволяющие поставить 2, 3 или 4 балла. При этом выполнено одно из двух условий. 1. Из описания алгоритма и общей структуры программы видно, что экзаменуемый в целом правильно представляет путь решения задачи. 2. Программа правильно работает в одном из важных частных случаев, например в случае, когда искомое произведение — это произведение наибольшего числа, которое делится на 2, и наибольшего числа, которое делится на 11. Допускается любое количество синтаксических ошибок. | 1 | Не выполнены критерии, позволяющие поставить 1, 2, 3 или 4 балла. | 0 | Максимальный балл | 4 |

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

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

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

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

    Решение. Произведение двух чисел делится на 22, если: - один из сомножителей делится на 22 (второй может быть любым) либо- ни один из сомножителей не делится на 22, причём один из сомножителей делится на 2, а другой — на

Осталось ещё 4 шага — откроются после входа:

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

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

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

Количество чисел известно, но может быть очень велико. Затем передаётся — решение с объяснением | Lom Ai