Задание из ЕГЭ по информатике
От: Serg27  
Дата: 19.05.17 09:47
Оценка:
Вчера вечером дочка попросила помочь с задачей из экзамена ЕГЭ по информатике, к которому она готовится. В школе никто из них не смог, преподаватель сказал что-то умное — и его никто не понял. Язык — Python. Я сначала воспринял задачу на слух и решил "другую". Потом все же внимательно прочитал и начал решать. Решил, но что-то сложно получалась для экзамена, где около 30 заданий (это конечно одно из самых сложных и за него дается 4 балла). К тому же закралось сомнение в правильности гипотезы, которую я положил в основу решения. Только я решил ее доказывать, как сразу нашел нормальное решение... Дочка сказала, что я монстр, и я был этим очень доволен...
Предлагаю для разминки. Естественно, интересен только вариант Б. Вполне подходит для собеседований.

Для заданной последовательности неотрицательных целых чисел необходимо найти максимальное произведение двух её элементов, номера которых различаются не менее чем на 8. Значение каждого элемента последовательности не превышает 1000. Количество элементов последовательности не превышает 10000.
Вам предлагаются два задания, связанные с этой задачей: задание А и задание Б. Вы можете решать оба задания А и Б или одно из них по своему выбору. Итоговая оценка выставляется как максимальная из оценок за задания А и Б. Если решение одного из заданий не представлено, то считается, что оценка за это задание составляет 0 баллов. Задание Б является усложненным вариантом задания А, оно содержит дополнительные требования к программе.
 
А. Напишите на любом языке программирования программу для решения поставленной задачи, в которой входные данные будут запоминаться в массиве, после чего будут проверены все возможные пары элементов. Перед программой укажите версию языка программирования. Обязательно укажите, что программа является решением задания А. Максимальная оценка за выполнение задания А — 2 балла.
 
Б. Напишите программу для решения поставленной задачи, которая будет эффективна как по времени, так и по памяти (или хотя бы по одной из этих характеристик).
 
Программа считается эффективной по времени, если время работы программы пропорционально количеству элементов последовательности N, т.е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз. Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта. Перед программой укажите версию языка программирования и кратко опишите использованный алгоритм.
Обязательно укажите, что программа является решением задания Б.
Максимальная оценка за правильную программу, эффективную по времени и по памяти — 4 балла. Максимальная оценка за правильную программу, эффективную по времени, но неэффективную по памяти, — 3 балла.
Напоминаем! Не забудьте указать, к какому заданию относится каждая из представленных Вами программ.
 
Входные данные представлены следующим образом. В первой строке задаётся число N — общее количество элементов последовательности. Гарантируется, что N > 8. В каждой из следующих N строк задаётся одно неотрицательное целое число – очередной элемент последовательности.
Пример входных данных:
10
100
45
55
245
35
25
10
10
10
26
Программа должна вывести одно число — описанное в условии произведение. Пример выходных данных для приведённого выше примера входных данных: 2600.

UPDATE
Решение дал watchmaker. Желающие сделать сами — не смотрите его сообщение
Отредактировано 19.05.2017 11:02 Serg27 . Предыдущая версия . Еще …
Отредактировано 19.05.2017 10:54 Serg27 . Предыдущая версия .
Отредактировано 19.05.2017 9:48 Serg27 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.