Форум » Обработка числовых последовательностей » Досрочный вариант С4 » Ответить

Досрочный вариант С4

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

Ответов - 7

shkereos: Подскажите, подойдёт ли моё решение для Б-части этого задания var max:longint;i:byte;j,n:integer;a:array[1..8]of integer; begin max:=-1; read(n); for i:=1 to 7 do read(a); for j:=8 to n do begin read(a[8]); if ((a[1]*a[7])mod 2<>0) then if ((a[1]*a[7]>max) then max:=a[1]*a[7]; if ((a[1]*a[8])mod 2<>0) then if ((a[1]*a[8]>max) then max:=a[1]*a[8]; if ((a[2]*a[8])mod 2<>0) then if ((a[2]*a[8]>max) then max:=a[2]*a[8]; for i:=1 to 7 do a:=a[i+1] end; writeln(max) end.

MEA: нет shkereos пишет: for i:=1 to 7 do read(a); ... for i:=1 to 7 do a:=a[i+1] недостает индекса и судя по-всему это решение другой задачи, т.к. расстояние между двумя элементами не обязательно равно 6. Должно быть не менее 6. Значит, это может быть произведение самого первого и сотого элемента в списке. И отсутствует проверка случая "нет таких чисел". Скорее всего за такое решение если дадут, то 1 балл.

MEA: MEA пишет: нет shkereos пишет:  цитата: for i:=1 to 7 do read(a); ... for i:=1 to 7 do a:=a[i+1]


MEA: shkereos пишет: Необходимо найти в заданной серии показаний прибора минимальное нечётное произведение shkereos пишет: if ((a[1]*a[7]>max) then max:=a[1]*a[7];

shkereos: var min:longint;i:byte;j,n:integer;a:array[1..8]of integer; begin min:=1000000; read(n); for i:=1 to 7 do read(a); for j:=8 to n do begin read(a[8]); if ((a[1]*a[7])mod 2<>0) then if ((a[1]*a[7]<min))then min:=a[1]*a[7]; if ((a[1]*a[8])mod 2<>0) then if ((a[1]*a[8]<min)) then min:=a[1]*a[8]; if ((a[2]*a[8])mod 2<>0) then if ((a[2]*a[8]<min)) then min:=a[2]*a[8]; for i:=1 to 7 do a:=a[i+1] end; writeln(min) end.

MEA: Вы изменили только минимум-максимум. А все остальное?

Exodus: на 4 балла тянет ? с++ #include <bits/stdc++.h> using namespace std; int a[6], x, minP = 1e8,Min=1e8,n; int main(){ cin >> n; for (int i = 0; i < 6; i++) cin >> a[ i ]; for (int i = 6; i < n; i++){ cin >> x; if (a[i % 6] % 2 && a[i % 6]< Min) Min = a[i % 6]; if ((Min*x) % 2 && Min*x < minP) minP = Min*x; a[i % 6] = x; } cout << (minP == 1e8 ? -1 : minP); return 0; }



полная версия страницы