Пример 8-го задания:
При каком наименьшем введенном числе d после выполнения
программы будет напечатано 63?
var n, s, d: integer;
begin
readln(d);
n := 3;
s := 57;
while s <= 1200 do begin
s := s + d;
n := n + 4
end;
write(n)
end.
Начальные значения! n:=3, вычитаем его из конечного значения 63-3=60, к n прибавляется в цикле одно и тоже число 4: n := n + 4, т.о. сложение можно заменить умножением. Сколько раз должен прокрутиться цикл, чтобы прибавляя на каждом шаге 4, получить 60? 60/4=15
Цикл крутиться 15 раз. Переходим к s. Начальное значение s := 57, т.о. цикл остановится когда s <= 1200-57, s <= 1143. какое число нужно прибавлять к s 15 раз, чтобы получить число большее 1143? 1143/15=76.2. Надо понять, что при 76 мы войдём в цикл и к n прибавиться 4 16-ый раз, т.е. лишний раз. Значит, чтобы остановить вовремя к s надо прибавлять 77 – это минимальное значение. Если надо узнать максимальное, то 1143 делим на 14 (находим max число, которое после 14-го шага цикла войдёт в цикл, а после 15-го остановит цикл) 1143/14=81.6. s:=s+81 14 раз даст 1134<1143, а s:=s+82 даст 1148>1143, т.е. на 15-ый шаг в цикл не войдёт и к n прибавится 4 только 14 раз, что не правильно. Т.о. любое число из интервала [77;81] удовлетворяет условиям задачи.