Задание 21 ЕГЭ по информатике 2018

Задание 21. Программирование: подпрограммы, графики функций: Демонстрационный вариант ЕГЭ по информатике 2018; государственный выпускной экзамен 2018; тренировочные варианты ЕГЭ по информатике, тематические тестовые задания и задачи из тренажера по информатике 2018

*** КАНАЛ ЮТЬЮБ ***
 
ЕГЭ по информатике -> ЕГЭ 2018 -> ЕГЭ 2018 — 21
 

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

 
ЕГЭ по информатике -> ЕГЭ 2018 -> ЕГЭ 2018 - 21