Задание 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. |
✍ Показать решение:
X вершины для такого уравнения находится по формуле:
Таким образом, функция имеет два минимума — в точках -1 и 1 (оси ox).
Так как в условии программы стоит
Таким образом, минимальное значение функции: R = 27, а параметр при минимальном значении функции: M = 1.
Результат:
-
Рассмотрим алгоритм:
- В цикле программы ищется минимальное значение, возвращаемое функцией F(t), вызываемой с параметрами от -20 до 20.
- После завершения работы цикла минимальное значение функции помещается в переменную R, а параметр, при котором функция возвратила минимальное значение, помещается в переменную M.
- В конце программы выводится результат M+R.
- В теле функции:
2 * (x*x-1) * (x*x-1) + 27 Т.е. в скобках получаем: (x2 - 1)2
(x2 — a)2;
x1,2 верш=±√a
x1,2 верш=±√a
F(t) <= R
, то условие будет истинным и при F(1). Проверим:F(-1) = 2 * 0 * 0 = 27 F(1) = 2 * 0 * 0 = 27
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. |
✍ Показать решение:
Рассмотрим алгоритм:
значение функции g зависит только от введенного k, т.к. k является параметром функции; значение g(k) постоянно и не меняется в программе (т.к. k не меняется);
при k = 9 функция g возвращает -16:
после ввода k проверяется условие цикла, который постоянно увеличивает i на единицу, пока
построим таблицу значений функции f(i) и самого i:
т.е. при i = 4 цикл завершится, а при i = 3 цикл еще работает;
построим систему уравнений:
найдем k согласно значениям промежутка:
получаем k в промежутке:
Наибольшее k на этом промежутке: k = 11.
- функция f возвращает произведение числа на последующее число со знаком минус (если i=2, то n=2, функция f(n) возвратит -2 * 3):
при n = 2 f(2) = -2 * (3) = -6
при k = 9 (n = 9): g := -2*n + 2 = -2*9 + 2 = -16
f(i) > g(k)
, или, другими словами, пока -i * (i+1) больше -16: пока f(i) > -16 i = i + 1 или: пока -i * (i+1) > -16 i = i + 1
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- нет |
g(k)< f(3) g(k)>=f(4) т.е.: f(4) <= g(k) < f(3) или -20 <= g(k) < 12 или g(k) ∈ [-20;-12)
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
7 < k <= 11
Результат: 11
ЕГЭ по информатике -> ЕГЭ 2018 -> ЕГЭ 2018 - 21