Вопрос:

Определи правильный ответ. Гена составил программу и получил результат 434. А потом забыл, какое значение d вводил. Помоги юному программисту определить, какое значение d он вводил в программу. var n, s, d: integer; begin readln(d); n := 2; s:= 34; while s <= 1600 do begin s:= s + d; n := n + 6 end; write(n) end. Рис. 1. Программа (В ответе запиши, какое значение д вводил Гена.)

Ответ:

Проанализируем программу. Цикл `while` выполняется до тех пор, пока `s` меньше или равно 1600. Внутри цикла `s` увеличивается на `d`, а `n` увеличивается на 6. После завершения цикла выводится значение `n`, которое равно 434. 1. Определим, сколько раз выполнился цикл. Начальное значение `n` равно 2. В конце `n` равно 434. Значит, `n` увеличилось на 434 - 2 = 432. 2. За каждый проход цикла `n` увеличивается на 6. Следовательно, цикл выполнился 432 / 6 = 72 раза. 3. Теперь рассмотрим переменную `s`. Начальное значение `s` равно 34. После 72 проходов цикла значение `s` должно превысить 1600. Обозначим значение `d` как x. После 72 проходов цикла `s` увеличится на 72x. 4. Таким образом, после 72 проходов значение `s` будет равно 34 + 72x. В момент выхода из цикла `s` превышает 1600, но на предыдущем шаге было меньше или равно 1600. Это означает, что 34 + 71x <= 1600, а 34 + 72x > 1600. Примем, что на последнем шаге значение было равно 1600. 5. Получаем уравнение: 34 + 72x = 1600. Решим его, чтобы найти `d`: $$72x = 1600 - 34$$ $$72x = 1566$$ $$x = \frac{1566}{72} = 21.75$$ 6. Поскольку `d` - целое число (integer), нужно проверить значения, близкие к 21.75. Если d = 21: s = 34 + 72 * 21 = 34 + 1512 = 1546 (меньше 1600). n = 2 + 72 * 6 = 434. Подходит. Если d = 22: s = 34 + 72 * 22 = 34 + 1584 = 1618 (больше 1600). n = 2 + 72 * 6 = 434. Подходит. Но надо проверить, что при d=21 на предыдущем шаге s было <= 1600, то есть 34 + 71 * 21 = 34 + 1491 = 1525 <= 1600. Все верно. И при d=22: 34 + 71 * 22 = 34 + 1562 = 1596 <= 1600. Все верно. Так как в задании нет дополнительных условий, можно принять любое из этих значений. С учетом условия, что на выходе n = 434, оба варианта допустимы. 7. Поскольку в ответе нужно указать одно число, выберем d = 22, как ближайшее целое число к 21.75, при котором s > 1600 на последнем шаге. Ответ: 22
Смотреть решения всех заданий с листа
Подать жалобу Правообладателю