Задача
Ниже на четырёх языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: L и M. Укажите наибольшее число x, при вводе которого алгоритм печатает сначала 4, а потом 5.
Решение (анализ программы)
Проведем анализ программы (Python).
Изначально переменная x
вводится с клавиатуры, переменная Q=9
, а L=0
.
x = int(input())
Q = 9
L = 0
По условию программа сначала вывела 4, а потом 5. В программе вывод организован следующим образом:
print(L)
print(M)
Таким образом, L=4
, а M=5
.
В программе присутствует цикл, который изменяет значения переменных x
и L
:
while x >= Q:
L = L + 1
x = x - Q
Очевидно, что L
это счетчик количества выполненных циклов, а x
результат разности x
и Q
, таким образом Q
вычитается из x
столько раз, сколько выполнился цикл.
Переменная x
, получившаяся в результате выполнения цикла, записывается в переменную Q
:
M = x
Таким образом, чтобы найти начальное значение переменной x
, необходимо:
С другой стороны, в программе присутствует часть кода с условным оператором:
if M < L:
M = L
L = x
Согласно условию M < L
значения переменных M
и L
меняются местами.
В том случае, если условие было выполнено, переменные будут иметь следующие значения L=5
и M=4
(эти значения будут перед выполнение условного оператора).
В этом случае начальное значение переменной x
будет равно:
В условии задачи нас просили найти наибольшее значение, поэтому нам необходимо выбрать наибольшее значение переменной x
из тех, что мы вычислили. Это значение - 49.
Ответ: 49.
Решение (программа)
Данную задачу, в том виде как она есть, можно легко решить при помощи обычного перебора перебора значений и сравнения полученного ответа с заданным результатом.
Очевидно, что этот процесс можно автоматизировать используя цикл, а в конце выполнения программы, полученные результаты сравнить с заданными. Учитывая, что числа будут перебираться в порядке возрастания, последнее, в результате обработки которой, получен верный результат и есть ответ.
В результате выполнения программы значение переменной x
меняется, этот факт необходимо учесть.
Разберемся в том, что выводит программа.
По условию программа сначала вывела 4, а потом 5. В программе вывод организован следующим образом:
print(L)
print(M)
Таким образом, L=4
, а M=5
.
Текст программы будет выглядеть следующим образом:
for i in range(1,101):
x = i
Q = 9
L = 0
while x >= Q:
L = L + 1
x = x - Q
M = x
if M < L:
M = L
L = x
if L == 4 and M == 5:
n = i
print(n)
Ответ: 49.