Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Объясните мне, что нужно запрогать в задачке по программированию...

... Просветленный (29356), закрыт 4 года назад
"Дана последовательность целых чисел a1, a2, ..an и число с. Найдите минимальное значение индекса р, при котором a1 + a2 + .+ap < c".

Не понимаю последнее предложение. Минимальный индекс - это как?
Вот есть последовательность:
45
15
98
45
32
17
65

Допустим, пользователь ввел число 100 (это меньше него должно быть a1 + a2 + .+ ap).
И какой он этот минимальный индекс?
0 - он, по-моему, уже минимальный, потому что сумма из одного числа (45) меньше 100.
Лучший ответ
Jurijus Zaksas Искусственный Интеллект (423786) 4 года назад
Все верно, минимальный индекс всегда 0. Просто составитель задачи тупой попался.
...Просветленный (29356) 4 года назад
Ну хоть в чем-то тупым оказался не я :O
Скорее всего, это действительно ошибка. Но формально задача имеет смысл. Надо учитывать, что числа могут быть отрицательные. По условию задачи числа целые, но не сказано, что они положительные. Например: Последовательность 10, 5, 0, -5, -10, -15, … c = 8
Остальные ответы
クマのプーさん Мудрец (15499) 4 года назад
максимальный имели ввиду
Victor Surozhtsev Просветленный (34137) 4 года назад
Есть численная переменная с, логическая переменная yesno, равная значению true, если массив содержит искомый индекс, сам массив а [1], ..а [n] и начальное значение суммы его элементов, равное нулю. Дальше в цикле после прибавления к s текущего элемента a[k] проверяешь условие s < c и если оно выполняется, то просто печатаешь текущее значение счётчика цикла k и выходишь из цикла. Если в массиве нет искомого индекса при всех их значениях от 1 до n, то переменная yesno по выходе из цикла имеет значение false и выдаётся соответствующее сообщение:

s:=0; yesno:=false; for k:=1 to n do begin s:=s+a[k]; if s < с then begin yesno:=true; writeln(k); break end end; if yesno=false then writeln('Нет такого индекса !');
Похожие вопросы