ЕГЭ Информатика 2020: Разбор задачи 21 (Python)

Задание предполагает написание программы, вычисляющей число по заданному алгоритму.

Условие задачи и алгоритм на Python

Напишите число, которое будет выведено в результате выполнения следующего алгоритма (на языке Python):

def f(x):
  return 2 * (x**2 - 100)**2 + 5

a = -20
b = 20
m = a
r = f(a)

for t in range(a, b + 1):
  if f(t) < r:
    m = t
    r = f(t)

print(m + 27)

Анализ алгоритма

Алгоритм включает:

  • Функцию f(x): Квадратичную функцию f(x) = 2 * (x**2 — 100)**2 + 5.
  • Переменные a и b: Границы интервала [-20, 20].
  • Переменные m и r: m хранит текущий минимум аргумента x, r — текущий минимум значения функции f(x).
  • Цикл for: Перебирает целые числа от a до b включительно.
  • Условие if f(t) < r: Сравнивает значение функции в точке t с текущим минимумом r. При меньшем значении функции, m и r обновляются.

Алгоритм находит минимум функции f(x) на интервале [-20, 20].

Поиск минимума функции

Минимальное значение функции достигается при (x**2 — 100)**2 = 0, то есть при x**2 = 100, следовательно, x = 10 или x = -10. Минимум достигается при x = -10 или x = 10. Из-за строгого неравенства в условии if f(t) < r, алгоритм выберет первое встреченное минимальное значение: x = -10.

Решение задачи

При x = -10, f(-10) = 5. После цикла, m = -10. Задача требует вывести m + 27, что равно -10 + 27 = 17.

Правильный ответ: 17.

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

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