Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках программирования).
| Бейсик | Паскаль |
|---|---|
DIM A, B, T, M, R AS INTEGER A = -15: B = 15 M = A: R = F(А) FOR T = A TO B IF F(T) < R THEN M = T R = F(T) END IF NEXT T PRINT M+50
FUNCTION F(x) F=10*x*x-100*ABS(x)+210 END FUNCTION
| var a, b, t, M, R: integer; Function F(x:integer):integer; begin F := 10*x*x-100*abs(x)+210 end;
begin a := -15; b := 15; 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+50) end.
|
| Си++ | Алгоритмический язык |
#include <iostream> #include <cmath> using namespace std; int F(int x) { return 10*x*x-100*abs(x)+210; }
int main() { int a, b, t, M, R; a = -15; b = 15; M = a; R = F(a); for (t = a; t <= b; t++) { if (F(t) < R) { M = t; R = F(t); } } cout << M+50 << endl; } | алг нач цел a, b, t, M, R a := -15; b := 15 M := a; R := F(a) нц для t от a до b если F(t) < R то M := t; R := F(t) все кц вывод M+50 кон
алг цел F(цел x) нач знач:=10*x*x-100*iabs(x)+210 кон |
| Python | |
def f(x): return 10*x*x-100*abs(x)+210 a = -15 b = 15 M = a R = f(a) for t in range(a, b+1): if (f(t) < R): M = t R = f(t); print(M+50)
| |
Алгоритм предназначен для поиска наименьшего t, при котором функция F(t) имеет наименьшее значение на отрезке от a до b.
Заметим, что график функции F = 10x2 − 100|x| + 210 симметричен относительно оси Oy. График с правой стороны этой оси совпадает с графиком параболы y = 10x2 − 100x + 210, а значит точка, в которых они принимают наименьшее значение также совпадают. Эта точка — вершина параболы. Её координаты [5; −40]. Однако, поскольку график симметричен относительно оси Oy, то такое же значение функция будет принимать в точке −5. А значит, алгоритм выведет число −5 + 50 = 45.
Ответ: 45.

