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

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

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

Решение:
program C4_DEMO2015B;
const
    C = 10000000;
var
    nums : array [1..C] of real;
    min_pr : real;
    n, m : integer;
    k : integer;
    pr : real;
    a : pinteger;
begin
    readln(k);
    GetMem(a, k * sizeof(integer)); 
    for n:=0 to k-1 do readln(nums[n]);
    min_pr:=1000*10000+1;
    for n:=1 to (k-6) do
        for m:=(n+6) to k do begin
            pr:=nums[n-1]*nums[m-1];
            if (pr < min_pr) then min_pr:=pr;
            writeln(sizeof(a));
        end;
        
        FreeMem(a);
        writeln(min_pr:8:2);
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
Листинг программы
const
    C=10000000;
var
    nums: array [1..C] of Integer;
...
    readln(k);
    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
Похожие ответы