При каком наибольшем введенном числе d после выполнения программы будет напечатано 89? ...

0 голосов
227 просмотров

При каком наибольшем введенном числе d после выполнения программы будет напечатано 89?

var n, s, d: integer;

begin

readln(d);

n := 5;

s := 83;

while s <= 1200 do begin<br>
s := s + d;

n := n + 6

end;

write(n)

end.


Информатика (15 баллов) | 227 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Программа должна вывести 89, то есть N после цикла должна стать равной 89.
Изначально N была равна 5, каждый повтор цикла к N прибавляется 6.
Определим количество повторов цикла (сколько раз к N должна быть прибавлена 6 для получения числа 89):
5+6*x = 89
6*x = 84
x = 14
То есть цикл должен совершить 14 повторов.

Каждый раз к S прибавляется D (которую нужно найти), изначально S = 83. Нам удобнее прибавлять D к нулю, а не к 83, поэтому вычтем из 1200 83 и приравняем S к нулю.
Условие в цикле теперь будет выглядеть как S <= 1117<br>
Нам нужно наибольшее S, при котором цикл совершает 14 повторов. Чем больше значение D, тем меньше повторов совершит цикл. Найдем наименьшее целое D, при котором цикл совершает 13 повторов, и возьмем предыдущее целое, это и будет наибольшее D, при котором цикл совершит 14 повторов.
Цикл завершается после того, как условие перестанет выполняться, то есть при s > 1117. Составим неравенство:

13*d > 1117
d > 85,92

То есть наименьшее D, при котором цикл совершит 13 повторов - 86, значит наибольшее D, при котором цикл совершит 14 повторов - 85.
Ответ 85

(15.5k баллов)