Решение: Количество итераций цикла
Определите, при каком наибольшем введённом значении переменной $s$ программа выведет число 64. Для Вашего удобства программа представлена на четырёх языках программирования.
Паскаль:
```pascal
var s, n: integer;
begin
readln(s);
n := 1;
while s < 47 do
begin
s := s + 4;
n := n * 2
end;
writeln(n)
end.
```
Python:
```python
s = int(input())
n = 1
while s < 47:
s = s + 4
n = n * 2
print(n)
```
Алгоритмический язык:
```text
алг
нач
цел n, s
ввод s
n := 1
нц пока s < 47
s := s + 4
n := n * 2
кц
вывод n
кон
```
C++:
```cpp
#include <iostream>
using namespace std;
int main()
{
int s, n;
cin >> s;
n = 1;
while (s < 47) { s = s + 4; n = n * 2; }
cout << n << endl;
return 0;
}
```
Решение по шагам
5 шаговНачальное значение переменной $n$ равно 1, и на каждой итерации цикла оно увеличивается в 2 раза.
$$n = 2^k$$Чтобы программа вывела 64, цикл должен выполниться 6 раз.
$$2^k = 64 = 2^6 \Rightarrow k = 6$$После пяти итераций значение переменной $s$ увеличится на 20. Чтобы выполнилась шестая итерация, необходимо $s + 20 < 47$.
После шестой итерации значение $s$ увеличится на 24. Чтобы цикл завершился, необходимо $s + 24 \geq 47$.
Получаем диапазон $23 \leq s < 27$. Наибольшее целое значение — 26.
$$23 \leq s < 27 \Rightarrow s_{\max} = 26$$Где здесь ошибаются
Считать, что цикл должен выполниться 64 раза.
Не учитывать условие цикла перед шестой итерацией.
Выбрать значение 27, при котором цикл выполнится только 5 раз.