Решение: Анализ цикла с условием
Определите наибольшее значение входной переменной $k$, при котором программа выдаёт тот же ответ, что и при входном значении $k = 27$.
1def F(n): 2 return n*n*n 3 4def G(n): 5 return 2*n + 2 6 7k = int(input()) 8i = 1 9while F(i) < G(k): 10 i += 1 11print(i)
Решение по шагам
4 шагаПрограмма увеличивает переменную $i$, пока выполняется условие $i^3 < 2k + 2$. Поэтому после завершения цикла $i$ — наименьшее целое число, для которого $i^3 \geq 2k + 2$.
$$i^3 \geq 2k + 2$$При $k = 27$ имеем $G(27) = 2 \cdot 27 + 2 = 56$. Значения $i = 1, 2, 3$ не подходят, а при $i = 4$ условие цикла становится ложным, так как $4^3 = 64 \geq 56$. Программа выводит $4$.
$$3^3 < 56 \leq 4^3$$Чтобы программа также выводила $4$, значение $i = 3$ должно ещё находиться в цикле, а значение $i = 4$ — уже завершать цикл.
$$3^3 < 2k + 2 \leq 4^3$$Решаем двойное неравенство: $27 < 2k + 2 \leq 64$, откуда $25 < 2k \leq 62$, то есть $12{,}5 < k \leq 31$. Наибольшее целое значение $k$ равно $31$.
$$k \leq 31$$Где здесь ошибаются
Проверяют только условие завершения цикла и забывают, что для вывода 4 значение $i = 3$ должно увеличиться до 4.
Получают границу $k = 32$, не учитывая неравенство $2k + 2 \leq 64$.
Считают, что при $k = 27$ программа выводит 3, хотя $3^3 = 27 < 56$ и цикл выполняется ещё раз.