Решение: Анализ циклов алгоритма
Ниже на четырёх языках программирования записан алгоритм. Получив на вход число $x$, этот алгоритм печатает два числа: $L$ и $M$. Укажите наибольшее число $x$, при вводе которого алгоритм печатает сначала 12, а потом 19.
1x = int(input()) 2Q = 8 3P = 10 4K1 = 0 5K2 = 0 6while x <= 100: 7 K1 = K1 + 1 8 x = x + P 9while x >= Q: 10 K2 = K2 + 1 11 x = x - Q 12L = x + K1 13M = x + K2 14print(L) 15print(M)
Решение по шагам
5 шаговПусть $n = K_1$ — число выполнений первого цикла. После него значение переменной равно $x_0 + 10n$ и превышает 100.
Пусть $r$ — значение переменной после второго цикла. Тогда $0 \le r < 8$, а $L = r + n = 12$, поэтому $r = 12 - n$.
Из условия $M = 19$ получаем $K_2 = 19 - r = 19 - (12 - n) = n + 7$.
Перед вторым циклом значение переменной равно $8K_2 + r$. Следовательно, исходное значение: $x_0 = 8(n + 7) + (12 - n) - 10n = 68 - 3n$.
Так как $r = 12 - n$ должно удовлетворять условию $0 \le r < 8$, минимальное возможное $n$ равно 5. При минимальном $n$ исходное $x_0$ максимально: $x_0 = 68 - 3 \cdot 5 = 53$.
Где здесь ошибаются
Путать исходное значение $x$ со значением переменной после первого цикла.
Забывать, что второй цикл завершается только при $x < 8$.
Искать любое подходящее значение вместо наибольшего.