Какое число будет напечатано в результате работы следующей программы? Для Вашего удобства программа приведена на пяти языках программирования.
| Бейсик | Python |
|---|---|
DIM A, B, T, M, R AS INTEGER A = -10: B = 10 M = 1: R = F(A) FOR T = A TO B IF F(T) >= R THEN M = M + 1 R = F(T) END IF NEXT T PRINT R + M FUNCTION F(x) F = (x+1)*(x+1) - 4 END FUNCTION
| def F(x): return (x+1)*(x+1) - 4 a=-10; b=10 M = 1; R = F(a) for t in range(a,b+1): if F(t) >= R: M = M + 1; R = F(t) print(R + M)
|
| Паскаль | Алгоритмический язык |
var a, b, t, M, R :integer; function F(x:integer):integer; begin F := (x+1)*(x+1) - 4 end; begin a := -10; b := 10; M := 1; R := F(a); for t := a to b do begin if F(t) >= R then begin M := M + 1; R := F(t) end end; write(R + M) end.
| алг нач цел a, b, t, M, R a := -10; b := 10 M := 1; R := F(a) нц для t от a до b если F(t) >= R то M := M + 1; R := F(t) все кц вывод R+M кон алг цел F(цел x) нач знач := (x+1)*(x+1) - 4 кон
|
| С++ | |
#include <iostream> using namespace std; int F(int x) { return (x+1)*(x+1) - 4; } int main() { int a, b, t, M, R; a = -10; b = 10; M = 1; R = F(a); for (t=a; t<=b; ++t) { if (F(t) >= R) { M = M+1; R = F(t); } } cout << R+M; return 0; }
| |
1. Алгоритм предназначен для поиска наибольшего значения функции F(t) на отрезке от a до b, при этом каждый раз, когда находится новое наибольшее значение, к переменной M прибавляется единица. Затем сумма наибольшего значения и переменной M выводится на экран.
2. график этой функции — парабола, ветви которой направлены вверх, поэтому функция принимает наибольшее значение на одном из концов.
3. Вычислим значения функции для концов:
4. Далее, найдём Значит, условие F(t) >= R будет соблюдаться в точках −10, 8, 9 и 10. Таким образом, переменная M будет равна 5.
Значит, ответ — 117 + 5 = 122.
Ответ: 122.

