Решение номера 7736 ФИПИ

На спутнике «Фотон» установлен прибор, предназначенный для измерения энергии космических лучей. Каждую минуту прибор передаёт по каналу связи неотрицательное вещественное число – количество энергии, полученной за последнюю минуту, измеренное в условных единицах. Временем, в течение которого происходит передача, можно пренебречь.

 

Необходимо найти в заданной серии показаний прибора минимальное произведение двух показаний, между моментами передачи которых прошло не менее 6 минут. Количество энергии, получаемое прибором за минуту, не превышает 1000 условных единиц. Общее количество показаний прибора в серии не превышает 10000.

 

Напишите на любом языке программирования программу для решения поставленной задачи. Ваша оценка будет зависеть не только от правильности программы, но и от того, насколько она эффективна.

 

Перед программой укажите версию языка и кратко опишите использованный алгоритм.

 

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

 

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

11

12

45

5

4

25

23

21

20

10

12

26

 

Программа должна вывести одно число – описанное в условии произведение.

 

Пример выходных данных для приведённого выше примера входных данных:

48

 

Объяснение

Нам необходимо найти минимальное допустимое произведение. В программе будем хранить последние 6 значений в массиве (mas), минимальное значение (min_number) и минимальное произведение (min_comp). Так как число элементов в массиве фиксировано, то программа является эффективной по памяти. Сначала введем первые 6 элементов в массив. Затем, при вводе очередного значения (a), сначала сравниваем элемент стоящий 6 номеров назад с минимальным значением (min_number), а потом сравниваем min_number * a и min_comp (результат). В конце каждого цикла заменяем в массиве элемент стоящий 6 номеров назад на a. Выводим результат (min_comp).

 

Примечание: В языке Python вещественный тип данных (float) обязательно имеет точку, поэтому, если произведение получилось целым, нам надо вывести его как целое (например: 48, а не 48.0). Поэтому в конце программы необходимо сделать проверку и вывести тот ответ, который необходим в этой ситуации.

 

Решение на языке Паскаль

Показать решение

 

Решение на языке Python

Показать решение

 

 

Оставить комментарий