Найти в заданной серии показаний прибора минимальное произведение двух показаний - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Решение:
Листинг программы
  1. program C4_DEMO2015B;
  2. const
  3. C = 10000000;
  4. var
  5. nums : array [1..C] of real;
  6. min_pr : real;
  7. n, m : integer;
  8. k : integer;
  9. pr : real;
  10. a : pinteger;
  11. begin
  12. readln(k);
  13. GetMem(a, k * sizeof(integer));
  14. for n:=0 to k-1 do readln(nums[n]);
  15. min_pr:=1000*10000+1;
  16. for n:=1 to (k-6) do
  17. for m:=(n+6) to k do begin
  18. pr:=nums[n-1]*nums[m-1];
  19. if (pr < min_pr) then min_pr:=pr;
  20. writeln(sizeof(a));
  21. end;
  22. FreeMem(a);
  23. writeln(min_pr:8:2);
  24. end.
Собственно, вопрос: В критериях оценивания сказано, что минимальное необходимое количество - шесть(см. ниже), но я не понимаю к чему это "шесть" относится, к кол-ву элементов или, может, кол-во памяти? Правильно ли я решил задачу при поставленных критериях? Заранее спасибо. На спутнике «Фотон» установлен прибор, предназначенный для измерения энергии космических лучей. Каждую минуту прибор передаёт по каналу связи неотрицательное вещественное число - количество энергии, полученной за последнюю минуту, измеренное в условных единицах. Временем, в течение которого происходит передача, можно пренебречь. Необходимо найти в заданной серии показаний прибора минимальное произведение двух показаний, между моментами передачи которых прошло не менее 6 минут. Количество энергии, получаемое прибором за минуту, не превышает 1000 условных единиц. Общее количество показаний прибора в серии не превышает 10 000. Б. Напишите программу для решения поставленной задачи, которая будет эффективна как по времени, так и по памяти (или хотя бы по одной из этих характеристик). Программа считается эффективной по времени, если время работы программы пропорционально количеству полученных показаний прибора N, т.е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз. Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта. Входные данные представлены следующим образом. В первой строке задаётся число N - общее количество показаний прибора. Гарантируется, что N > 6. В каждой из следующих N строк задаётся одно неотрицательное вещественное число - очередное показание прибора. Пример входных данных: 11 12 45.3 5.5 4 25 23 21 20 10 12 26 Программа должна вывести одно число - описанное в условии произведение. Пример выходных данных для приведённого выше примера входных данных: 48 Программа правильно работает для любых соответствующих условию входных данных. При этом не используются массивы и другие структуры данных, размер которых зависит от количества входных элементов, а время работы пропорционально этому количеству. Возможно использование массивов и динамических структур данных (например, контейнеры STL в программе на языке C++) при условии, что в них в каждый момент времени хранится фиксированное число элементов, требующих для хранения меньше 1кб (минимально необходимое количество - шесть; допускается решение с запасом).

Решение задачи: «Найти в заданной серии показаний прибора минимальное произведение двух показаний»

textual
Листинг программы
  1. const
  2.     C=10000000;
  3. var
  4.     nums: array [1..C] of Integer;
  5. ...
  6.     readln(k);
  7.     GetMem(a, k * sizeof(integer));

Объяснение кода листинга программы

В данном коде выполняется следующие действия:

  1. Объявляется константа C, которая задает размер массива nums. Значение константы C равно 10000000.
  2. Объявляется переменная nums типа array [1..C] of Integer. Она представляет собой массив, который будет содержать показания прибора. Размер массива равен 10 000 000.
  3. Запрашивается ввод числа k с клавиатуры.
  4. Выделяется память под массив a размером k sizeof(integer). Размер памяти, выделенной под массив, будет равен k 4 байт (так как тип данных integer занимает 4 байта).

ИИ поможет Вам:


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

Оцени полезность:

10   голосов , оценка 3.9 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы