Присоединиться

11 класс·высокий уровень

Каждое число передаётся в виде отдельной текстовой строки, содержащей

Условие

По каналу связи передаётся последовательность положительных целых чисел Х₁, Х₂, ... все числа не превышают 1000, их количество заранее неизвестно. Каждое число передаётся в виде отдельной текстовой строки, содержащей десятичную запись числа. Признаком конца передаваемой последовательности является число 0. Участок последовательности от элемента Х_T до элемента X_(T+N) называется подъёмом, если на этом участке каждое следующее число больше или равно предыдущему, причем участок нельзя расширить, т. е.

  1. Т = 1 или Х_(T-1) > Х_T2) X_(T+N) — последний элемент последовательности или X_(T+N) > X_(T+N+1). Высотой подъёма называется разность X_(T+N) − Х_T. Подъём считается значительным, если высота подъёма больше величины минимального элемента этого подъема. Напишите программу, которая вычисляет количество значительных подъемов в заданной последовательности. Программа должна вывести результаты в следующей форме: Получено чисел: ...Найдено значительных подъемов: ... Вам предлагаются два задания, связанные с этой задачей: задание А и задание Б. Вы можете решать оба задания А и Б или одно из них по своему выбору.

Итоговая оценка выставляется как максимальная из оценок за задания А и Б. Если решение одного из заданий не представлено, то считается, что оценка за это задание составляет 0 баллов.

Задание Б является усложненным вариантом задания А, оно содержит дополнительные требования к программе. Перед программой укажите версию языка программирования. А. Напишите на любом языке программирования программу для решения поставленной задачи, в которой входные данные будут запоминаться в массиве, после чего будут проверены все возможные пары элементов.

Обязательно укажите, что программа является решением задания А.Максимальная оценка за выполнение задания А - 2 балла. Б. Напишите программу для решения поставленной задачи, которая будет эффективна как по времени, так и по памяти (или хотя бы по одной из этих характеристик).Программа считается эффективной по времени, если время работы программы пропорционально количеству элементов последовательности N, т. е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз. Обязательно укажите, что программа является решением задания Б. Перед текстом программы кратко опишите алгоритм решения задачи. Пример входных данных: 14417212737911250 Пример выходных данных для приведённого выше примера входных данных:Получено чисел: 9Найдено значительных подъемов: 1 Пояснения для проверяющих.1. Задание Б является усложнением задания А. Если в качестве решения задания Б представлено решение задания А, то согласно приведённым ниже критериям, его оценка будет такой же, как если бы это решение было представлено в качестве решения задания А.2. Два задания и, соответственно, возможность для экзаменуемого представить две программы дают ученику возможность (при его желании) сначала написать менее сложное и менее эффективное решение (задание А), которое даёт ему право получить два балла, а затем приступить к поиску более эффективного решения. 3. Каждая из программ, представленных экзаменуемым (но не более двух), оценивается по нижеследующим критериям. В качестве итоговой оценки берётся наибольшая из двух оценок.

Формат задания

Развёрнутый ответ: короткого ответа здесь нет — оценивается само рассуждение. Разбор откроется после входа.

Решение по шагам

  1. Как рассуждать

    Решение. Ниже приведены примеры решения задания на языке Паскаль, на алгоритмическом языке и на языке Бейсик. Допускаются решения, записанные на других языках программирования. Пример правильной и эффективной программы на языке Паскаль:program с4_1; varn, up, х, start, last : integer;beginn: =0; up:=0;start:=1001; last:=1001; repeatreadln(x); n: =n+1;if x < last then beginif last > 2start then up:=up+1; start:=x; end;last:=x; until x = 0;writeln('Получено чисел: ', n-1);writeln('Найдено значительных подъемов: ', up);end.Пример правильной и эффективной программы на алгоритмическом языке:алг С4_1 начцел n, up, х, start, last n: =0 up: =0start:=1001 last:=1001 нцввод x n: =n+1если x < last toесли last > 2start to up:=up+1 все start:=x; всеlast:=x; кц при x=0вывод "Получено чисел: ", n-1, невывод "Найдено значительных подъемов: ", up, не кон Пример правильной и эффективной программы на языке Бейсик:DIM n, up, х, start, last AS INTEGERn=0up=0start=1001last=1001DOINPUT xn = n + 1IF x < last THENIF last > 2 * start THEN up = up + 1 start = x;END IF last = x LOOP UNTIL x = 0 PRINT "Получено чисел: "; n-1PRINT "Найдено значительных подъемов: up Приводим решение Игоря Кудашева на Python

Осталось ещё 1 шаг

  1. Программа эффективна только по времени.a =…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Программирование»