На спутнике «Восход» установлен прибор, предназначенный для измерения
Условие
На спутнике «Восход» установлен прибор, предназначенный для измерения солнечной активности. В течение времени эксперимента (это время известно заранее) прибор каждую минуту передаёт в обсерваторию по каналу связи положительное целое число, не превышающее 1000, — количество энергии солнечного излучения, полученной за последнюю минуту, измеренное в условных единицах.После окончания эксперимента передаётся контрольное значение — наибольшее число R, удовлетворяющее следующим условиям:1) R — произведение двух чисел, переданных в разные минуты;2) R делится на 26.Предполагается, что удовлетворяющее условиям контрольное значение существовало в момент передачи.В результате помех при передаче как сами числа, так и контрольное значение могут быть искажены.Напишите эффективную по времени и используемой памяти программу (укажите используемую версию языка программирования, например Free Pascal 2.6.4), которая будет проверять правильность контрольного значения. Программа считается эффективной по времени, если время работы программы пропорционально количеству полученных показаний прибора N, т. е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз. Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта.Программа должна напечатать отчёт по следующей форме. Вычисленное контрольное значение: …Контроль пройден (или Контроль не пройден) Если удовлетворяющее условию контрольное значение определить невозможно, то выводится только фраза «Контроль не пройден». Перед текстом программы кратко опишите используемый Вами алгоритм решения.На вход программе в первой строке подаётся количество чисел 1 < N ≤ 100 000. В каждой из последующих N строк записано одно положительное целое число, не превышающее 1000. В последней строке записано контрольное значение. Пример входных данных:552123955232860 Пример выходных данных для приведённого выше примера входных данных:Вычисленное контрольное значение: 2860Контроль пройден Критерии оценивания выполнения задания | Баллы | Пояснения для проверяющих.1. Задание Б является усложнением задания А. Если в качестве решения задания Б представлено решение задания А, то согласно приведённым ниже критериям его оценка будет такой же, как если бы это решение было представлено в качестве решения задания А.2. Два задания (и, соответственно, возможность для экзаменуемого представить две программы) дают ученику возможность (при его желании) сначала написать менее сложное и менее эффективное решение (задание А), которое даёт ему право получить 2 балла, а затем приступить к поиску более эффективного решения.3. Приведённые в п. 2.1-2.5 правила имеют целью избежать снижения оценки из-за того, что ученик перепутал обозначения заданий | | Критерии оценивания задания А | | При решении задачи A программа верно находит требуемую суммудля любых 6 пар исходных данных. Допускается до пяти синтаксических и приравненных к ним ошибок (см. критерии оценивания задания Б на 4 балла) | 2 | Не выполнены условия, позволяющие поставить 2 балла. Из описания алгоритма и общей структуры программы видно, что экзаменуемый в целом правильно представляет путь решения задачи. Допускается любое количество «описок» | 1 | Не выполнены критерии, позволяющие поставить 1 или 2 балла | 0 | Максимальный балл для задания А | 2 | Критерии оценивания выполнения задания Б | Баллы | Программа правильно работает для любых соответствующих условию входных данных и при этом эффективна как по времени, так и по памяти, т.е. не используются массивы и другие структуры данных (в том числе стек рекурсивных вызовов), размер которых зависит от количества входных элементов, а время работы пропорционально этому количеству. Возможно использование массивов и динамических структур данных при условии, что в них в каждый момент времени хранится фиксированное количество элементов, требующих для хранения меньше 1Кб. Программа может содержать не более трёх синтаксических ошибок следующих видов:1) пропущен или неверно указан знак пунктуации;2) неверно написано или пропущено зарезервированное слово языка программирования;3) не описана или неверно описана переменная;4) применяется операция, недопустимая для соответствующего типа данных.К синтаксическим ошибкам приравнивается использование неверного типа данных. Если одна и та же ошибка встречается несколько раз, она считается за одну ошибку | 4 | Не выполнены условия, позволяющие поставить 4 балла.Программа в целом работает правильно для любых входных данных произвольного размера. Время работы пропорционально количеству введённых чисел; правильно указано, какие величины должны вычисляться по ходу чтения элементов последовательности чисел. Количество синтаксических ошибок («описок») указанных выше видов - не более пяти.Используемая память, возможно, зависит от количества прочитанных чисел (например, входные данные запоминаются в массиве, контейнере STL в C++ или другой структуре данных). Допускается ошибка при вводе и выводе данных, не влияющая на содержание решения.Программа может содержать не более пяти синтаксических и приравненных к ним ошибок, описанных в критериях на 4 балла.Кроме того, допускается наличие одной ошибки, принадлежащей к одному из следующих видов:1) ошибка инициализации, в том числе отсутствие инициализации;2) не выводится результат, равный 0, или вместо 0 выводится неверное значение;3) допущен выход за границу массива;4) используется знак “<” вместо “<=”, “or” вместо “and” и т.п. | 3 | Не выполнены условия, позволяющие поставить 3 или 4 балла.Программа работает в целом верно, эффективно или нет, например для решения задачи используется перебор всех возможных вариантов выбора элементов в парах. В реализации алгоритма допускается до трёх содержательных ошибок, допустимые виды ошибок перечислены в критериях на 3 балла.Количество синтаксических «описок» не должно быть более семи. Программа может быть неэффективна по времени, например все числа запоминаются в массиве и перебираются все возможные суммы, т.е., по сути, реализовано решение задачи А без ограничений на количество ввёденных пар | 2 | Не выполнены условия, позволяющие поставить 2, 3 или 4 балла. Из описания алгоритма или общей структуры программы видно, что экзаменуемый в целом правильно представляет путь решения задачи независимо от эффективности. При этом программа может быть представлена отдельными фрагментами, без ограничений на количество синтаксических и содержательных ошибок. 1 балл ставится также за решения, верные лишь в частных случаях | 1 | Не выполнены критерии, позволяющие поставить 1, 2, 3 или 4 балла | 0 | Максимальный балл для задания Б | 4 | Итоговый максимальный балл | 4 |
Формат задания
Решение по шагам
Как рассуждать
Решение. Можно заметить, что 26 = 13*2. Поэтому ответом является наибольшее из двух произведений:a) максимальное нечетное число, кратное 13, умноженное на максимальное четное число из оставшихся;b) максимальное число, кратное 26, умноженное на максимальное число из оставшихся.Чтобы не взять в произведении одно и тоже число, можно хранить номер их поступления. Если вдруг найдем повторяющиеся значения по этому номеру (например, на тесте из 3 элементов 52, 5 и 7 значение максимума и максимального числа кратного 26 совпадает), то найдем предмаксимумы для обоих случаев и возьмем более выгодный из них. Далее пример оптимальной программы на языке PascalABC. var n, i, a, r, max2, max13, max26, max, predmax: integer; index2, index13, index26, indexmax, ans, ans1, ans2: integer; begin readln(n); max:=0; max26:=0; max13:=0; max2:=0; ans:=0; ans1:=0; ans2:=0; r:=0; for i := 1 to n do begin readln(a); if (a mod 13 =
Осталось ещё 4 шага
Шаг 2
Шаг 3
Шаг 4
Шаг 5
Бесплатно · займёт минуту