ЕГЭ - Демоверсия 2018 №21
Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма. Для Вашего удобства алгоритм представлен на пяти языках программирования.
Бейсик |
Python |
Алгоритмический язык |
DIM A, B, T, M, R AS LONG A = -20: B = 20 M = A: R = F(A) FOR T = A TO B IF F(T) <= R THEN M = T R = F(T) END IF NEXT T PRINT M+R FUNCTION F (x) F = 2*(x*x-1)*(x*x-1)+27 END FUNCTION |
def F(x): return 2*(x*x-1)*(x*x-1)+27 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+R) |
алг нач цел a, b, t, M, R a:=-20; b:=20 M:=a; R:=F(a) нц для t от a до b если F(t) <= R то M:=t; R:=F(t) все кц вывод M+R кон алг цел F(цел x) нач знач:=2*(x*x-1)*(x*x-1)+27 кон |
Pascal |
C++ |
|
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. |
#include <iostream> using namespace std; long F(long x) { return 2*(x*x-1)*(x*x-1)+27; } int main() { long a = -20, b = 20, M = a, R = F(a); for (int t = a; t <= b; ++t) { if (F(t)<= R) { M = t; R = F(t); } } cout << M + R; return 0; } |
Решение:
В программе имеется функция F(x) = 2*(x*x-1)*(x*x-1)+27, которая позже в ней вызывается для проверки выполнения условия.
Изначально переменной М присваивается число -20, а переменной R результат функции F(-20) = 2*(-202-1)*(-202-1)+27 = 2*399*399 + 27.
Далее работает цикл со счётчиком значений от -20 до 20, в котором проверяется условие: результат функции от каждого из чисел цикла F(t) меньше или равен переменной R. При выполнении условия переменная M заменяется числом цикла t, а переменная R заменяется результатом функции F(t).
Результат всей программы складывается из переменных M (число цикла при котором выполнится последние условие) и переменной R (результат функции при числе цикла последнего выполнения условия).
Давайте разберёмся при каком числе условие выполнится последний раз. Для этого рассмотрим несколько первых условий.
R = F(a), a = -20.
t = -20
F(t)<=R /F(-20)<=F(-20)/ - условие выполняется, значит M = -20, R = 2*(-202-1)*(-202-1)+27.
t = -19
F(-19) <=R /2*(-192-1)*(-192-1)+27 <= 2*(-202-1)*(-202-1)+27/ - условие выполняется, значит М = -19, R = 2*(-192-1)*(-192-1)+27.
t = -18
F(-18) <= R /2*(-182-1)*(-182-1)+27 <= 2*(-192-1)*(-192-1)+27/ - условие выполняется, значит М = -18, R = 2*(-182-1)*(-182-1)+27.
При других отрицательных числах цикла, условие тоже будет выполняться.
Чтобы условие не выполнилось значение в скобках функции должно быть равно 0.
t = 0
F(0) <= R /2*(-1)*(-1)+27 <= 2*(-12-1)*(-12-1)+27/ 29 <= 27 – условие не выполняется, значит переменные М и R остаются с прежними значениями, M = -1, R = F(-1)
t = 1
F(1) <= R /2*(12-1)*(12-1)+27 <= 2*(-12-1)*(-12-1)+27/ 27<=27 – условие выполняется, значит M = 1, R = F(1)
t=2
F(2) <= R /2*(22-1)*(22-1)+27 <= 2*(12-1)*(12-1)+27/ 45 <= 27 – условие не выполняется, переменные M, R остаются без изменений.
При следующих числа цикла условие также не будет выполняться потому значение функции будет возрастать.
Значит в результате получили: M = 1, R = 27
Ответ : 28
ЕГЭ - Демоверсия 2017 №21
Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках программирования).
Решение:
Суть программы сводится к подсчёту количества чисел в диапазоне от -100 до 100 удовлетворяющих условию: (x-16) * (x+25) <= 0
Если значение в двух скобках одновременно буду отрицательными или положительными, то результатом будет являться число больше нуля, что не подходит под условие. Поэтому рассмотрим каждую скобку в отдельности.
(1)
x - 16 < 0, при значениях х от -100 до 15;
x - 16 = 0, при значении х 16;
x - 16 > 0, при значениях х от 17 до 100
(2)
x + 25 < 0, при значениях х от -100 до -26;
x + 25 = 0, при значении х -25;
x + 25 > 0, при значениях х от -24 до 100
Так как нам не подходят варианты когда в двух скобках отрицательные и положительные значения, избавимся от них:
-
при значениях х от -100 до -26 в обоих скобках будут отрицательные значения, а после их умножения получим положительное число.
-
при значениях х от 17 до 100 в обоих скобках будут положительные значения, соответственно и после умножения получатся положительные числа.
Остаётся диапазон чисел от -25 до 16. Таких чисел 42.
Ответ: 42