Задание проверяет способность анализировать алгоритмы, содержащие условные конструкции и циклы. Ранее подобные задания решались вручную, анализируя фрагмент программы. Сейчас алгоритм можно проверить с помощью среды программирования. Рассмотрим оба способа решения.
Решение вручную
Предложен алгоритм (на языках C++ и iPython), получающий на вход число x и печатающий два числа: l и m. Задача – найти наибольшее число x, при вводе которого алгоритм сначала выведет 4, а затем 5 (l = 4 и m = 5).
Алгоритм использует переменную q = 9 (значение неизменно). Переменная l инициализируется нулём. Цикл с предусловием проверяет: если x ≥ q, то l увеличивается на 1, а из x вычитается q. Цикл подсчитывает, сколько раз 9 «вместится» в x.
После цикла, в переменную m записывается остаток от деления x на 9. Затем, если m < l, значения l и m меняются местами.
l – количество раз, когда 9 «вместилось» в x, а m – остаток от деления.
Для получения наибольшего x, выведшего 4 и 5, нужно 5 раз взять по 9 (5 * 9 = 45) и добавить остаток 4: 45 + 4 = 49.
Наименьшее число: 4 * 9 + 5 = 41.
Решение с использованием Python
Проверим решение с помощью Python. Цикл for перебирает значения x от 1 до 100. В цикле реализуем алгоритм, и если l == 4 и m == 5, выведем x.
Код на Python:
q = 9
for x in range(1, 101):
l = 0
while x ≥ q:
l += 1
x -= q
m = x
if m < l:
l, m = m, l
if l == 4 and m == 5:
print(x)
Код выведет 41 и 49. Наибольшее число – 49.
Ручной анализ и программирование на Python подтверждают, что наибольшее число x, при вводе которого алгоритм выведет сначала 4, а затем 5, равно 49.