Количество чисел известно, но может быть очень велико. Затем передаётся
Условие
По каналу связи передаётся последовательность положительных целых чисел, все числа не превышают 1000. Количество чисел известно, но может быть очень велико. Затем передаётся контрольное значение последовательности — наименьшее число R, удовлетворяющее следующим условиям:1) R является произведением двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных элементов последовательности, равных по величине, допускаются);2) R кратно 6. Если такого числа R нет, то контрольное значение полагается равным 0. В результате помех при передаче как сами числа, так и контрольное значение могут быть искажены.Напишите эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет проверять правильность контрольного значения.Программа должна напечатать отчёт по следующей форме: Вычисленное контрольное значение: …Контроль пройден (или — Контроль не пройден) Перед текстом программы кратко опишите используемый Вами алгоритм решения.На вход программе в первой строке подаётся количество чисел N;в программе можно считать, что 2 ≤ N ≤ 10 000. В каждой из последующих N строк записано одно натуральное число, не превышающее 1000. В последней строке записано контрольное значение — натуральное число, не превышающее 1 000 000. Пример входных данных:630653430012Пример выходных данных для приведённого выше примера входных данных:Вычисленное контрольное значение: 12Контроль пройден Критерии оценивания выполнения задания | Баллы | Программа правильно работает для любых соответствующих условию входных данных. При этом не используются массивы и другие структуры данных, размер которых зависит от количества входных элементов, а время работы пропорционально этому количеству. Возможно использование массивов и динамических структур данных (например, контейнеры STL в программе на языке C++) при условии, что в них в каждый момент времени хранится не более 15 элементов (минимально необходимое количество — шесть; допускается решение с запасом).Программа может содержать не более трёх синтаксических ошибок следующих видов:− пропущен или неверно указан знак пунктуации (запятая, точка с запятой, скобки и т.д.);− неверно написано или пропущено служебное слово языка программирования;− не описана или неверно описана переменная;− применяется операция, не допустимая для соответствующего типа данных.К синтаксическим ошибкам приравнивается использование неверного типа данных (например, использование целого типа вместо вещественного для представления данных при вводе и обработке).Если одна и та же ошибка встречается несколько раз, она считается за одну ошибку. | 4 | Не выполнены условия, позволяющие поставить 4 балла. Программа правильно работает для любых соответствующих условию входных данных, время работы пропорционально количеству входных элементов. Размер используемой памяти не имеет значения и может зависеть от объёма входных данных. В частности, допускается использование одного или нескольких массивов размера N (как в первых двух приведённых выше решениях).Программа может содержать не более пяти синтаксических и приравненных к ним ошибок, описанных в критериях на 4 балла. Кроме того, допускается наличие не более одной «содержательной» ошибки из числа следующих:− неверная инициализация при поиске минимального значения;− неверная обработка начальных элементов данных, которая может, например, привести к получению ошибочного ответа при 6 < N < 12;− неточное определение границ массива, выход за границу массива (например, описан массив с границами от 1 до 6, а реально используется от 0 до 5 или наоборот);− вычисленный индекс элемента массива на 1 отличается от верного;− используется знак “<” вместо “<=”, “or” вместо “and” и т. п. | 3 | Не выполнены условия, позволяющие поставить 3 или 4 балла. Программа работает в целом верно, эффективно или нет. Например, допускается решение, в котором все элементы хранятся в массиве и производится перебор всех пар, расстояние между которыми не меньше 6. Допускается до семи синтаксических и приравненных к ним ошибок (см. критерии на 4 балла). Допускается до двух «содержательных» ошибок, описанных в критериях на 3 балла. | 2 | Не выполнены условия, позволяющие поставить 2, 3 или 4 балла. Из описания алгоритма или общей структуры программы видно, что экзаменуемый в целом правильно представляет путь решения задачи независимо от эффективности. При этом программа может отсутствовать или быть представленной отдельными фрагментами, без ограничений на количество ошибок. | 1 | Не выполнены критерии, позволяющие поставить 1, 2, 3 или 4 балла | 0 | Максимальный балл | 4 |
Формат задания
Решение по шагам
Как рассуждать
Решение. Произведение двух чисел делится на 6, если:− один из сомножителей делится на 6 (второй может быть любым), либо− ни один из сомножителей не делится на 6, причём один из сомножителей делится на 2, а другой — на 3.Поэтому программа, вычисляющая контрольное число, может работать так. Программа читает все входные данные один раз, не запоминая все данные в массиве. Программа для прочитанного фрагмента входной последовательности хранит значения четырех величин:М2 — самое маленькое чётное число, не кратное 3;М3 — самое маленькое число, кратное 3, но не кратное 2;М6 — самое маленькое число, кратное 6;MIN — самое маленькое число среди всех элементов последовательности, отличное от M6 (если число М6 встретилось более одного раза и оно же является минимальным, то MIN = M6).После того как все данные прочитаны, искомое контрольное слово вычисляется как минимум из произведений M6MIN и М2М3.Ниже приведён пример программы на языке Паскаль, которая реализует описанный алгоритм. Пример правильной и эффективной программы на языке Паскаль: Program C4;var M2, M3, M6, MIN, dat: integer; R, res, i, N: longint;begin M2 := 1001; M3 := 1001; M6 := 1001; MIN := 1001; readln(N); for i := 1 to N do begin readln(dat); if (dat mod 2 =
Осталось ещё 6 шагов
Шаг 2
Шаг 3
Шаг 4
Шаг 5
Шаг 6
Шаг 7
Бесплатно · займёт минуту