Подготовка ребёнка к ЕГЭ по информатике. Часть девятая

07.02.19

Разработка - Математика и алгоритмы

Последний уровень. Часть 2.

27 задание. Часть вторая

 

Предисловие

 

Вот и вторая часть по решению 27 здания. В этот раз будут рассматриваться демонстрационные варианты с 2014 по 2016 годы. Здесь будет представлена задача по нахождению контрольного значения, которая не была представлена ранее, а также две экспериментальных задачи.

 

Источник: Демонстрационный вариант ЕГЭ 2016 г. ИНФОРМАТИКА и ИКТ, 11 класс.

 

1. В физической лаборатории проводится долговременный эксперимент по изучению гравитационного поля Земли. По каналу связи каждую минуту в лабораторию передаётся положительное целое число – текущее показание прибора «Сигма 2015». Количество передаваемых чисел в серии известно и не превышает 10 000. Все числа не превышают 1000. Временем, в течение которого происходит передача, можно пренебречь. Необходимо вычислить «бета-значение» серии показаний прибора – минимальное чётное произведение двух показаний, между моментами передачи которых прошло не менее 6 минут. Если получить такое произведение не удаётся, ответ считается равным –1.

 

Вам предлагается два задания, связанных с этой задачей: задание А и задание Б. Вы можете решать оба задания или одно из них по своему выбору. Итоговая оценка выставляется как максимальная из оценок за задания А и Б. Если решение одного из заданий не представлено, то считается, что оценка за это задание – 0 баллов. Задание Б является усложнённым вариантом задания А, оно содержит дополнительные требования к программе.

 

А. Напишите на любом языке программирования программу для решения поставленной задачи, в которой входные данные будут запоминаться в массиве, после чего будут проверены все возможные пары элементов. Перед программой укажите версию языка программирования. ОБЯЗАТЕЛЬНО укажите, что программа является решением ЗАДАНИЯ А. Максимальная оценка за выполнение задания А – 2 балла.

 

Б. Напишите программу для решения поставленной задачи, которая будет эффективна как по времени, так и по памяти (или хотя бы по одной из этих характеристик). Программа считается эффективной по времени, если время работы программы пропорционально количеству полученных показаний прибора N, т.е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз. Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта.

 

Перед программой укажите версию языка программирования и кратко опишите использованный алгоритм. ОБЯЗАТЕЛЬНО укажите, что программа является решением ЗАДАНИЯ Б. Максимальная оценка за правильную программу, эффективную по времени и по памяти, – 4 балла. Максимальная оценка за правильную программу, эффективную по времени, но неэффективную по памяти, – 3 балла.

 

НАПОМИНАЕМ! Не забудьте указать, к какому заданию относится каждая из представленных Вами программ.

 

Входные данные представлены следующим образом. В первой строке задаётся число N – общее количество показаний прибора. Гарантируется, что N > 6. В каждой из следующих N строк задаётся одно положительное целое число – очередное показание прибора.

 

Пример входных данных:

11

12

45

5

3

17

23

21

20

19

18

17

 

Программа должна вывести одно число – описанное в условии произведение либо –1, если получить такое произведение не удаётся. Пример выходных данных для приведённого выше примера входных данных: 54

 

Выбираем Б.

Отметим, что программа похожа по ходу своего решения на первую задачу из 7 части цикла статей. По аналогии создаем массив из такого количества элементов, какой требуется минимальный минут промежуток. Далее заполняем массив первыми шестью элементами последовательности. Затем для всех последующих чисел – с 1 по последнее – найдем минимальное четное и второй минимум среди оставшихся чисел, такой, что промежуток между первым и вторым минимумами не менее 6. Для соблюдения промежутка будем делать постепенный сдвиг массива.

 

program minimumevenamountoftwonumberswithintervalsixminutes;

var

a:array[1..6]of integer;

AmountOfNumbers, FirstIndex, SecondIndex, MinimumEvenMultiolyOfTwoNumbers,

InputNumber, FirstMinimumNumber, SecondMinimumNumber, temporary:integer;

begin

writeln('Введите количество чисел в последовательности = ');

readln(Amountofnumbers);

for FirstIndex := 1 to 6 do

begin

writeln('Введите число = ');

readln(a[FirstIndex]);

end;

FirstMinimumNumber := 1001;

SecondMinimumNumber := 1001;

MinimumEvenMultiolyOfTwoNumbers := FirstMinimumNumber*SecondMinimumNumber;

for FirstIndex := 7 to AmountOfNumbers do

begin

writeln('Введите число = ');

readln(InputNumber);

if a[1]<FirstMinimumNumber then

FirstMinimumNumber := a[1];

if (a[1] mod 2 = 0) and (a[1] < SecondMinimumNumber) then

SecondMinimumNumber := a[1];

if InputNumber mod 2 = 0 then

temporary := InputNumber*FirstMinimumNumber

else if

Вступайте в нашу телеграмм-группу Инфостарт