Разбор 21 задания ЕГЭ по информатике

На уроке рассмотрен разбор 21 задания ЕГЭ по информатике: дается подробное объяснение и решение задания 2017 года

Объяснение задания 21 ЕГЭ по информатике

21-я тема характеризуется, как задание повышенного уровня сложности, время выполнения – примерно 6 минут

Программирование: подпрограммы (функции), графики функций

Для решения задания 21 необходимо рассмотреть или повторить следующие темы:

  • использование функций в качестве подпрограмм;
  • ниже представлен пример программы для поиска наименьшего значения функции F(x) на интервале [a,b], с просмотром значений от a до b с шагом 1:
  • 1
    2
    3
    4
    5
    
    M:=a; R:=F(a);
    for t:=a to b do
      if F(t) < R then begin
        R:=F(t); M:=t;
      end;
  • если функция имеет вид F(x) = ax2 + bx + c, то абсцисса (x), соответствующая точке минимума, вычисляется по следующей формуле:
  • точка минимума
  • если квадратное уравнение задано таким образом: F(x) = a(x-p)(x-q), то абсцисса, соответствующая точке минимума, вычисляется по формуле:
  • 1_1
Графики функций

    Графики функций

  • при a>0 ветви параболы направлены вверх, при a<0 ветви параболы направлены вниз:
  • ветви параболы

  • вершина параболы вычисляется по формуле:
  • вершина параболы

Решение 21 заданий ЕГЭ по информатике


Разбор 21 задания ЕГЭ по информатике 2017 года ФИПИ вариант 7 (Крылов С.С., Чуркина Т.Е.):

Напишите в ответе наименьшее значение входной переменной k, при котором программа выдает тот же ответ, что и при входном значении k=20.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var k, i : longint;
function f(n: longint) : longint;
begin
  f := -(n+1) * (n+1) * (n+1);
end;
 
function g(n: longint) : longint;
begin
  g := -2*n + 2;
end;
 
begin
  readln(k);
  i := 1;
  while f(i) > g(k) do
    i:= i+1;
  writeln(i)
end.


✍ Решение:

Рассмотрим алгоритм:

  • функция f возвращает отрицательный куб увеличенного на единицу параметра этой функции (если i=1, то n=1, функция f(n) возвратит -23):
  • при n = 1  
    f(1) = -(1+1) * (1+1) * (1+1) = -2 * 2 * 2 = -23
    
  • значение функции g зависит только от введенного k, т.к. k является параметром функции; значение g(k) постоянно и не меняется в программе (т.к. k не меняется);
  • при k = 20 функция g возвращает -38:
  • при k = 20 (n = 20):
    g := -2*n + 2 = -2*20 + 2 = -38
    
  • после ввода k проверяется условие цикла, который постоянно увеличивает i на единицу, пока f(i) > g(k), или, другими словами, пока отрицательное значение куба числа i+1 больше -38:
  • пока f(i) > -38 
      i = i + 1
    или:
    пока  -(i+1)3 > -38
      i = i + 1
    
  • построим таблицу значений функции f(i) и самого i:
  • i f(i) Работает ли условие цикла при k=20
    1 -23=-8 -28 > -38 — да
    2 -33=-27 -27 > -38 — да
    3 -43=-64 -64 > -38 — нет
  • т.е. при i = 3 цикл завершится, а при i = 2 цикл еще работает;
  • из функции g видим, что чем больше ее аргумент, тем меньшее значение она выдает;
  • чтобы найти наименьшее значение k, надо взять наибольшее значение функции g(k) (при таком же значении i), для которого бы цикл еще продолжал работать, это число -28:
  • i = 2 
    чтобы получить наименьшее k возьмем ближайшее к -27 значение g(k), т.е -28:
    f(i) > g(k), т.е. -27 > -28
    
  • для того чтобы найти k, подставим значение в функцию g(k):
  • -28 = -2*n + 2
    n = (-28-2)/-2 = 15
    
  • поскольку n — это и есть k, то k = 15

Результат: 15

Если что-то осталось непонятным, необходимо просмотреть видео с разбором задания 21:


Разбор 21 задания ЕГЭ по информатике 2017 года ФИПИ вариант 13 (Крылов С.С., Чуркина Т.Е.):

Определите, какое число будет напечатано в результате выполнения следующего алгоритма.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var a,b,t,M,R : integer;
function F(x: integer) : integer;
begin
  F := 4 * (x+2)*(x-4);
end;
 
begin
  a:=-20; b:=20;
  M:=a; R:= F(a);
  for t:=a to b do
      begin
           if (F(t)<R) then begin
              M:=t;
              R:=F(t);
           end;
      end;
  write(M);
end.

✍ Решение:

  • В цикле происходит поиск наименьшего значения функции F(t) на отрезке от a до b (строка 12 программы).
  • В функции F — квадратное уравнение, которое на графике представляет собой параболу. t — это точка x параболы, а F(t)у параболы. То есть в цикле организован поиск наименьшего y на отрезке параболы от a до b.
  • Преобразуем квадратное уравнение:
  • F(x) = 4(x+2)(x-4) = 4x2 - 8x - 32
    
  • Так как программа выводит на экран M (М — это и есть х), то нам необходимо найти такой x, при котором функция F(x) возвращает наименьшее значение.
  • Из уравнения видим, что ветви параболы направлены вверх (старший коэффициент 4x2 — положительный). Парабола может выглядеть примерно так:
  • решение 21 задания егэ

  • Очевидно, что наименьшее значение функции будет в вершине (в нашем случае она совпадает с точкой минимума). Найдем x вершины по формуле:
  • xверш = -b/2a

    \[ X верш= \frac {-(-8)}{2 * 4} = \frac {8}{8} = 1 \]

  • Поскольку M = t = x, то 1 — это и есть значение, которое выдаст программа

Результат: 1

Чтобы лучше понять решение задания, лучше посмотрите видео с разбором:


Разбор 21 задания ЕГЭ по информатике 2017 года ФИПИ вариант 17 (Крылов С.С., Чуркина Т.Е.):

Определите, какое число будет напечатано в результате выполнения следующего алгоритма.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var a,b,t,M,R : integer;
function F(x: integer) : integer;
begin
  F := -3 * (x+2)*(x-6);
end;
 
begin
  a:=-20; b:=20;
  M:=a; R:= F(a);
  for t:=a to b do
      begin
           if (F(t)<R) then begin
              M:=t;
              R:=F(t);
           end;
      end;
  write(M);
end.

✍ Решение:

  • В цикле происходит поиск наименьшего значения функции F(t) на отрезке от a до b.
  • В самой функции F — квадратное уравнение, что означает на графике параболу. Тогда t — это точка x параболы, а F(t)у параболы. То есть в цикле организован поиск наименьшего y на отрезке параболы от a до b.
  • Преобразуем квадратное уравнение:
  • F(x) = -3(x+2)(x-6) = -3x2 + 12x + 36
     
  • Так как программа выводит на экран значение M, то необходимо найти такой x, при котором функция F(x) выдает наименьшее значение (М — это и есть х).
  • Из уравнения видим, что ветви параболы направлены вниз (старший коэффициент -3x2 — отрицательный)
  • Так как мы рассматриваем только интервал от -20 до 20, то наименьшее значение y на этом промежутке параболы будет либо в точке x=-20, либо в точке x=20.
    y минимален либо при ч=20, либо при х=-20

    y минимален либо при х=20, либо при х=-20

  • Подставим последовательно значения -20 и 20 в качестве аргументов функции, чтобы найти наименьшее из полученных значений y:
  • F(-20) = -3*(-20+2)*(-20-6) = -1404
    F(20) = -3*(20+2)*(20-6) = 924
    
  • Видим, что наименьший y получается при х=-20.
  • Поскольку M = t = x, то -20 — это и есть значение, которое выведет программа.

Результат: -20

Если что-то осталось непонятным — посмотрите видео с решением данного 21 задания:


Разбор 21 задания ЕГЭ по информатике 2017 года ФИПИ вариант 20 (Крылов С.С., Чуркина Т.Е.):

Определите, какое целое значение H нужно ввести, чтобы число, напечатанное в результате выполнения следующего алгоритма, было наибольшим. Если таких значений несколько, то в ответ запишите минимальное из них.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var a,b,t,M,R,H : integer;
function F(H, x: integer) : integer;
begin
  F := (x-10)*(x-H);
end;
 
begin
  readln(H);
  a:=-20; b:=40;
  M:=a; R:= F(H,a);
  for t:=a to b do
      begin
           if (F(H,t)<R) then begin
              M:=t;
              R:=F(H,t);
           end;
      end;
  write(M);
end.

✍ Решение:

  • В цикле происходит поиск наименьшего значения функции F(H,t) на отрезке от a до b.
  • Величина H в программе не изменяется, то есть выполняет роль константы; она передаётся в функцию и влияет на значение функции.
  • В самой функции F — квадратное уравнение, что означает, что график этой функции — парабола. Тогда t — это точка оси x параболы, а F(H,t)у параболы. То есть в цикле организован поиск наименьшего y на отрезке параболы от a до b.
  • Рассмотрим квадратное уравнение:
  • F(x) = (x-10)(x-H) = x2 - 10x - Hx + 10H
  • Так как в результате работы программы выводится M, то нам необходимо найти такой x, при котором функция F(H,x) выдает наименьшее значение (М — это и есть х).
  • Из уравнения видим, что ветви параболы направлены вверх (старший коэффициент 1*x2 — положительный). Парабола может иметь такой вид:
  • y наименьшее при х=-20 или 2=40

  • Так как мы рассматриваем только интервал от -20 до 40, и по условию необходимо получить наибольшее значение x, то выгоднее построить такую параболу, когда наименьшее значение функции (y параболы) будет соответствовать точке x=40, т.е. будет соответствовать наибольшему возможному x:
  • график параболы для решения 21 задания егэ

  • Существует формула для x вершины: -b/2a.
  • Из предыдущего пункта можно найти H, зная, что минимальное значение функции достигается при хверш=40:
  • \[ 40 = \frac {-(-10-H)}{2*1} \]

    40*2 = 10+H; 
    H = 80-10 = 70 
    
  • Таким образом, чтобы программа вывела наибольшее x, необходимо, чтобы вершина параболы совпала с наибольшем значением данного интервала [-20,40], т.е. с 40. Функция в этой точке возвращает минимальное значение, а значение H при этом равняется 70.

Результат: 70

Видео данного решения доступно для просмотра:


21 задание. Демоверсия ЕГЭ 2018 информатика:

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

Паскаль:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var a, b, t, M, R :longint;
function F(x: longint): longint;
begin
  F:= 2*(x*x-1)*(x*x-1)+27;
end;
begin
a:=-20; b:=20;
M:=a; R:=F(a);
for t:= a to b do begin
  if (F(t) <= R) then begin
     M:=t;
     R:=F(t)
  end
end;
write(M+R)
end.


✍ Решение:

    Рассмотрим алгоритм:

  • В цикле программы ищется минимальное значение, возвращаемое функцией F(t), вызываемой с параметрами от -20 до 20.
  • После завершения работы цикла минимальное значение функции помещается в переменную R, а параметр, при котором функция возвратила минимальное значение, помещается в переменную M.
  • В конце программы выводится результат M+R.
  • В теле функции:
  • 2 * (x*x-1) * (x*x-1) + 27
    Т.е. в скобках получаем: 
    (x2 - 1)2
    

  • X вершины для такого уравнения находится по формуле:
  • (x2 — a)2;
    x1,2 верш=±√a
  • Таким образом, функция имеет два минимума — в точках -1 и 1 (оси ox).
  • Так как в условии программы стоит F(t) <= R, то условие будет истинным и при F(1). Проверим:
  • F(-1) = 2 * 0 * 0 = 27
    F(1) = 2 * 0 * 0 = 27
    
  • Таким образом, минимальное значение функции: R = 27, а параметр при минимальном значении функции: M = 1.
  • Результат:
  • M + R = 28 

Результат: 28


Решение 21 задания ЕГЭ по информатике, вариант 2 (ФИПИ, «ЕГЭ информатика и ИКТ, типовые экзаменационные варианты 2018», С.С. Крылов, Т.Е. Чуркина):

Напишите в ответе наибольшее значение входной переменной k, при котором программа выдает тот же ответ, что и при входном значении k=9.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 var
  k, i: longint;
function f(n: longint): longint;
begin
  f := -n * (n + 1);
end;
function g(n: longint): longint;
begin
  g := -2 * n + 2;
end;
 
begin
  readln(k);
  i := 1;
  while f(i) > g(k) do
    i := i + 1;
  writeln(i)
end.


✍ Решение:

Рассмотрим алгоритм:

  • функция f возвращает произведение числа на последующее число со знаком минус (если i=2, то n=2, функция f(n) возвратит -2 * 3):
  • при n = 2  
    f(2) = -2 * (3) = -6
    
  • значение функции g зависит только от введенного k, т.к. k является параметром функции; значение g(k) постоянно и не меняется в программе (т.к. k не меняется);
  • при k = 9 функция g возвращает -16:
  • при k = 9 (n = 9):
    g := -2*n + 2 = -2*9 + 2 = -16
    
  • после ввода k проверяется условие цикла, который постоянно увеличивает i на единицу, пока f(i) > g(k), или, другими словами, пока -i * (i+1) больше -16:
  • пока f(i) > -16 
      i = i + 1
    или:
    пока  -i * (i+1) > -16
      i = i + 1
    
  • построим таблицу значений функции f(i) и самого i:
  • i f(i) Работает ли условие цикла при k=9
    1 -1*2 =-2 -2 > -16 — да
    2 -2*3 =-6 -6 > -16 — да
    3 -3*4=-12 -12 > -16 — да
    4 -4*5=-20 -20 > -16- нет
  • т.е. при i = 4 цикл завершится, а при i = 3 цикл еще работает;
  • построим систему уравнений:
  • g(k)< f(3)
    g(k)>=f(4)
    т.е.:
    f(4) <= g(k) < f(3)
    или
    -20 <= g(k) < 12
    или
    g(k) ∈ [-20;-12)
    
  • найдем k согласно значениям промежутка:
  • 1.
    g(k) >= -20 => -2*k + 2 >= -20
    -2k >= -22 | :(-2) меняем знак!
    k <=11  
    2.
    g(k) < -12 => -2*k + 2 < -12
    -2k < -14 | :(-2) меняем знак!
    k > 7
    
  • получаем k в промежутке:
  • 7 < k <= 11
    
  • Наибольшее k на этом промежутке: k = 11.

Результат: 11

Подробнее разобраться в решении задания можно, посмотрев видео:



Решение 21 задания демоверсии егэ по информатике 2019:

Определите число, которое будет напечатано в результате выполнения следующего алгоритма.

Примечание. Функция abs возвращает абсолютное значение своего входного параметра.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var a, b, t, M, R : longint;
function F(x: longint) : longint;
begin
  F := abs(abs(x - 6) + abs(x + 6) - 16) + 2;
end;
begin
  a := -20; b := 20;
  M := a; R := F(a);
  for t := a to b do begin
    if (F(t) <= R) then begin
      M := t;
      R := F(t)
    end
  end;
  write(M + R)
end.


✍ Решение:

  • В 9-й строке алгоритма программы находится цикл, счетчик которого (t) принимает целые значения в интервале от a (-20) до b (20):
  • for t:=a to b do begin
      ...
    end;
    
  • В начале программы переменной M присваивается значение a, а переменной R присваивается результат функции с параметром a (в точке a):
  • M:=a; R:=F(a);
    
  • В цикле с помощью условного оператора сравнивается значение функции F(t) со значением переменной R. В случае истинности условия в R присваивается меньшее значение функции, а в M присваивается параметр функции, которая возвратила меньшее значение.
  • if (F(t)<=R)then begin
      M:=t;
      R:=F(t);
    end;
    
  • Таким образом, в цикле происходит поиск минимума функции F(t) на интервале от a до b. В итоге в переменной M оказывается значение параметра t, при котором функция достигает минимума на интервале от a до b.
  • Перепишем функцию в более понятном виде:
  • f(x) = | | x – 6 | +  | x + 6 |  – 16 | + 2
    
  • Рассмотрев функцию, можно сказать, что на графике она имеет минимумы в тех точках, где выполняется равенство:
  • | x – 6 | +  | x + 6 |  – 16 = 0; 
    
  • Решим данное уравнение:
  • в скобках под знаком модуля необходимо получить нули и отметить данные точки на числовой оси:
  • для | x – 6 | ноль будет в точке 6
    для | x + 6 | ноль будет в точке -6
    
  • для интервала (–∞; –6) раскроем модули, установив их с обратным знаком:
  • – (x – 6) – (x + 6) – 16 = 0  =>  
    -2x - 16 = 0; -2x = 16;
    x = – 8
    
  • полученное значение -8 находится в интервале (–∞; –6), поэтому является решением уравнения;
  • раскроем модули для полуинтервала [–6; 6):
  • – (x – 6) + (x + 6) – 16 = 0  => 
    12 = 16
    решений нет
    
  • раскроем модули для полуинтервала [6; ∞):
  • (x – 6) + (x + 6) – 16 = 0  =>
    2x = 16
    x = 8
    
  • полученное значение принадлежит полуинтервалу [6; ∞), значит, является решением уравнения.
  • Таким образом, мы нашли точки минимума (x = – 8 и x = 8), которые принадлежат отрезку [–20; 20].
  • В обеих полученных точках значение функции равно 2, какую же точку необходимо считать за минимум? Поскольку в условии F(t) <= R у нас стоит нестрогое неравенство, то дойдя до второй точки, условие тоже будет истинным и произойдет присваивание M:=t; и R:=F(t);. Поэтому в результате R равной 2, а M станет равной 8 (второй минимум).
  • На экран при этом выводится M+R:
  • 8 + 2 = 10
    

Результат: 10

Видео решения демоверсии егэ 2019:

Поделитесь уроком с коллегами и друзьями:
Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить