Шешімі: Определение числа итераций цикла
Определите, при каком наибольшем введённом значении переменной $s$ программа выведет число $128$. Для удобства программа представлена на четырёх языках программирования.
Паскаль:
```pascal
var s, n: integer;
begin
readln(s);
n := 1;
while s >= 5 do
begin
s := s - 5;
n := n * 2
end;
writeln(n)
end.
```
Python:
```python
s = int(input())
n = 1
while s >= 5:
s = s - 5
n = n * 2
print(n)
```
Алгоритмический язык:
```text
алг
нач
цел n, s
ввод s
n := 1
нц пока s >= 5
s := s - 5
n := n * 2
кц
вывод n
кон
```
C++:
```cpp
#include <iostream>
using namespace std;
int main()
{
int s, n;
cin >> s;
n = 1;
while (s >= 5) {
s = s - 5;
n = n * 2;
}
cout << n << endl;
return 0;
}
```
Шешім по шагам
5 қадамВ начале работы программы $n = 1$. На каждой итерации цикла значение $n$ умножается на 2.
$$n = 2^k$$Определим число итераций, необходимое для получения числа 128.
$$2^k = 128 = 2^7 \Rightarrow k = 7$$За одну итерацию из $s$ вычитается 5. Чтобы цикл выполнился 7 раз, исходное значение должно быть не меньше $35$.
$$s \ge 7 \cdot 5 = 35$$После седьмой итерации цикл должен завершиться, поэтому остаток должен быть меньше 5.
$$s - 35 < 5 \Rightarrow s < 40$$Наибольшее целое значение $s$, удовлетворяющее условиям $35 \le s < 40$, равно 39.
$$s_{\max} = 39$$Где здесь ошибаются
Считать, что число 128 получается после 128 итераций.
Не учитывать условие завершения цикла $s < 5$ после последнего вычитания.
Ответить 40, хотя при $s = 40$ цикл выполнится 8 раз.