Теория:

Характеристика задания
 
1. Тип ответа: запись числовых значений.

2. Структура содержания задания: дана программа, содержащая ветвление и цикл.

3. Уровень сложности задания: повышенный.

4. Примерное время выполнения: \(7\) минут.

5. Количество баллов: \(1\).

6. Требуется специальное программное обеспечение: да.

7. Задание проверяет умение анализировать алгоритм, содержащий ветвление и цикл.
 
Пример задания (демоверсия \(2022\))
 
Ниже на четырёх языках программирования записан алгоритм. Получив на вход число \(x\), этот алгоритм печатает два числа — \(L\) и \(M\). Укажи наибольшее число \(x\), при вводе которого алгоритм печатает сначала \(4\), а потом \(5\).
 
1.png
Рис. \(1\). Пример задания
 
Как решать задание?

Спецификация контрольных измерительных материалов рекомендует решать эту задачу без использования специализированного программного обеспечения.
 
Проанализируем алгоритм.
 
1\(Q=9\)
      \(L=0\)
    while \(x>=Q\):
       \(L=L+1\)
       \(x=x-Q\)
Внутри цикла while \(Q\) не изменяется, перепишем эту часть программы, заменив \(Q\) её значением
2\(Q=9\)
   \(L=0\)
    while \(x>=9\):
        \(L=L+1\)
        \(x=x-9\)
В \(L\) производится подсчёт, сколько раз число \(9\) содержится в заданном \(x\), а в \(x\) остаётся остаток от деления на \(9\)
3\(M=x\)Остаток записывается в \(M\)
4if \(M<L\):
     \(M=L\)
     \(L=x\)
Если остаток от деления на \(9\) меньше, чем частное, то они меняются местами
5print (\(L\))
print (\(M\))
Числа выводятся в порядке возрастания
 
Для нашей задачи неизвестно, выполнялись ли действия, меняющие значения, поэтому рассмотрим два варианта значений \(L\) и \(M\), предшествующие \(4\)-й строке таблицы.
 
\(L = 4\); \(M = 5\)\(X=4*9+5=41\)
\(L = 5\); \(M = 4\)\(X=5*9+4=49\)
 
\(49\) — наибольшее, это и есть ответ задачи.

Действительно, для некоторых задач с узнаваемым алгоритмом этот способ решения применим. Например, для определения экстремумов квадратичной функции на отрезке или анализа и преобразования записей чисел в позиционной системе счисления, алгоритма Евклида для определения НОД двух натуральных чисел и других алгоритмов, перечисленных в «Кодификаторе проверяемых требований к результатам освоения основной образовательной программы среднего общего образования и элементов содержания для проведения единого государственного экзамена по информатике». Но если узнать алгоритм не удалось, то можно его исследовать, организовав в программе циклический перебор данных.
Идеально же сочетать оба подхода: проанализировать алгоритм с целью определения, какие преобразования он выполняет; если возможен перебор, определиться с границами интервала, в котором выполняется перебор, или подтвердить переборным решением аналитическое.
 
Напишем программу.
 
1for \(i\) in range (\(10\), \(150\)):
    \(x=i\)
    \(Q=9\)
    \(L=0\)
Организовали перебор. Начинаем перебор с числа \(10\), так как при меньшем исходном данном мы не «попадём» в цикл while. А вот число \(150\) выбрано произвольно. Если результат не будет достигнут, его придётся увеличивать
2while \(x>=Q\):
        \(L=L+1\)
        \(x=x-Q\)
    \(M=x\)
    if \(M<L\):
        \(M=L\)
        \(L=x\)
Программа остаётся без изменений
3if \(L= =4\) and \(M= =5\):
        print (\(i\))
Вывод осуществляем только в том случае, если он соответствует условию задачи
4image.jpgРезультат работы программы