Определите, какое число будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках):
| Бейсик | Python |
|---|---|
DIM A, B, T, M, R AS INTEGER A = -10: 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-9)*(x*x-9)+9; END FUNCTION
| def F(x): return 2*(x*x-9)*(x*x-9)+9 a=-10; 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)
|
| Паскаль | Алгоритмический язык |
var a,b,t,M,R :longint; Function F(x:integer):integer; begin F := 2*(x*x-9)*(x*x-9)+9; end; BEGIN a := -10; 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.
| алг нач цел a, b, t, M, R a := -10; 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-9)*(x*x-9)+9 кон |
| Си++ | |
#include <iostream> using namespace std; int F(int x) { return 2*(x*x-9)*(x*x-9)+9; } int main() { int a, b, t, M, R; a = -10; b = 20; M = a; R = F(a); for (t=a; t<=b; t++) { if (F(t)<=R) { M = t; R = F(t); } } cout << M*R << endl; return 0; }
| |
Изначально M = −10, а R = 16571. Далее при t от −10 до 20 проверяем, истинно ли выражение F(t) <= R, и обновляем значение, если это так. Поэтому программа находит минимальное t и F(t), при котором F(t) <=F(t-1), а F(t+1) > F(t). Получаем систему:
2*((x)*(x)-9)*((x)*(x)-9) <= 2*((x-1)*(x-1)-9)*((x-1)*(x-1)-9)
2*((x)*(x)-9)*((x)*(x)-9) <=2*((x+1)*(x+1)-9)*((x+1)*(x+1)-9)
Упростив, получаем:
(x-3)*(x+3)*(x-3)*(x+3) <=(x-4)*(x+2)*(x-4)*(x+2)
(x-3)*(x+3)*(x-3)*(x+3) <=(x-2)*(x+4)*(x-2)*(x+4)
Это возможно только при x = 3. Тогда R(3) = 9. Ответ 3*9 = 27.
Ответ: 27.

