ЕГЭ Информатика 22: Анализ алгоритма (C++, Python)

Задание проверяет способность анализировать алгоритмы, содержащие условные конструкции и циклы. Ранее подобные задания решались вручную, анализируя фрагмент программы. Сейчас алгоритм можно проверить с помощью среды программирования. Рассмотрим оба способа решения.

Решение вручную

Предложен алгоритм (на языках 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.

Что будем искать? Например,программа