ЕГЭ, вопрос 21: П. Умение анализировать программу, использующую процедуры и функции
Проверяемые элементы содержания по спецификации (2019): Умение анализировать программу, использующую процедуры и функции
Кодификатор 1.7.2/1.1.4. Уровень сложности П, 1 балл.
Время выполнения — 6 мин.
Принципиально: задание введено только с 2012 года!
Наиболее ответственным этапом будет осознание закономерностей работы функции.
Следующая сложность — знак отношения условного оператора. Его необходимо обязательно анализировать отдельно!
Возможно я ошибаюсь и такого никогда не случается, но... Если в подобном задании отсутствует или неправильно сделано выравнивание (отступы) строк, надо подавать апеляцию на КИМ. Мой мозг неспособен себе представить никакого варианта отказа по ней. У вас просто может не хватить времени для анализа из-за неудобства чтения.
Задания
- Демо 2020 (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 + 27
FUNCTION F(x)
F = 2*(x*x - 100) * (x*x - 100) + 5
END FUNCTIONdef F(x): return 2 * (x * x - 100) * (x * x - 100) + 5
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 + 27)Алгоритмический язык Паскаль алг
нач
цел 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 + 27
кон
алг цел F(цел x)
нач
знач := 2 * (x * x - 100) * (x * x - 100) + 5
конvar a, b, t, M, R: longint;
function F(x: longint): longint;
begin
F := 2 * (x * x - 100) * (x * x - 100) + 5;
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 + 27) end.C++ #include <iostream>
using namespace std;
long F(long x) {
return 2*(x*x - 100) * (x*x - 100) + 5;
}
int main() {
long a, b, t, M, R;
a = -20;
b = 20;
M = a;
R = F(a);
for (t = a; t <= b; t++) {
if (F(t) < R) {
M = t; R = F(t);}
}
cout << M + 27 << endl;
return 0;
}
- Демо 2019 (21). Определите число, которое будет напечатано в результате выполнения следующего алгоритма. Для Вашего удобства алгоритм представлен на пяти языках программирования.
Примечание. Функции abs и iabs возвращают абсолютное значение своего входного параметра.Бейсик 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 = abs(abs(x - 6) + abs(x + 6) - 16) + 2
END FUNCTIONdef F(x):
return abs(abs(x - 6) + abs(x + 6) - 16) + 2
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)
нач
знач := iabs(iabs(x - 6) + iabs(x + 6) - 16) + 2
конvar a, b, t, M, R : longint;
function F(x: longint) : longint;
begin
F := abs(abs(x - 6) + abs(x + 6) - 16) + 2;
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 abs(abs(x - 6) + abs(x + 6) - 16) + 2;
}
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;
}
- Демо 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 FUNCTIONdef 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
кон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;
}
- D2018 (21). Определите число различных значений входной переменной k, при которых программа выдаёт тот же ответ, что и при входном значении k = 8.
Значение k = 8 также включается в подсчёт различных значений k. Для Вашего удобства программа приведена на пяти языках программирования.
Бейсик Python DIM K, I AS LONG
INPUT K
I = 12
WHILE I > 0 AND F(I) > K
I = I - 1
WEND
PRINT I
FUNCTION F(N)
F = N * N* N
END FUNCTIONdef F(n):
return n * n * n
k = int(input())
i = 12
while (i > 0 and F(i) > k):
i = i - 1
print (i)Алгоритмический язык Паскаль алг
нач
цел i, k
ввод k
i := 12
нц пока i > 0 и f(i) > k
i := i - 1
кц
вывод i
кон
алг цел f(цел n)
нач
знач := n * n * n
конvar k, i : longint;
function F(n : longint) : longint;
begin
F := n * n * n
end;
begin
readln(k);
i := 12;
while (i>0) and (F(i)>k) do
i := i-1;
writeln(i)
end.Си #include <iostream>
using namespace std;
long F(long n) {
return n * n * n;
}
int main()
{
long k, i;
cin >> k;
i = 12;
while (i>0 && F(i)>k)
i––;
cout << i;
return 0;
}
- R2018 (21). Какое значение будет выведено на экран после выполнения данной программы?
Бейсик Python DIM A, B, T, M, R AS INTEGER
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+24
FUNCTION F(x)
F := 2*(x-19)*(x-19)+7
END FUNCTIONdef f(x):
return 2*(x-19)*(x-19)+7
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+24)Си++ Паскаль #include <iostream>
using namespace std;
int F(int x)
{
return 2*(x-19)*(x-19)+7
}
int main()
{
int a, b, t, M, R;
a = -20; b = 20;
M = a; R = F(a);
for (t=a; t<=b; t++){
if (F(t) > R) {
M = t; R = F(t);
}
}
cout << (M+24) << endl;
}var a,b,t,M,R :integer;
Function F(x: integer):integer;
begin
F := 2*(x-19)*(x-19)+7;
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+24);
END.
- Демо 2017 (21). Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках программирования).
Бейсик Python DIM A, B, N, t AS INTEGER
A = -100: B = 100
N = 0
FOR t = A TO B
IF F(t) <= 0 THEN
N = N + 1
END IF
NEXT t
PRINT N
FUNCTION F (x)
F = (x - 16)*(x + 25)
END FUNCTIONdef f(x):
return (x - 16)*(x + 25)
a = -100
b = 100
n = 0
for t in range(a, b + 1):
if f(t) <= 0:
n = n + 1
print(n)Алгоритмический язык Паскаль алг
нач
цел a, b, N, t
a := -100; b := 100
N := 0
нц для t от a до b
если F(t) <= 0
то
N := N + 1
все
кц
вывод N
кон
алг цел F(цел x)
нач
знач := (x - 16)*(x + 25)
конvar a, b, N, t: integer;
Function F(x: integer):integer;
begin
F := (x - 16)*(x + 25)
end;
begin
a := -100; b := 100;
N := 0;
for t := a to b do begin
if (F(t) <= 0) then
N := N + 1
end;
write(N)
end.Си #include<stdio.h>
int F(int x) {
return (x - 16)*(x + 25);
}
void main() {
int a, b, N, t;
a = -100; b = 100;
N = 0;
for (t = a; t <= b; t++) {
if (F(t) <= 0) {
N++;
}
}
printf("%d", N);
}
- Демо 2016 (21). Напишите в ответе наименьшее значение входной переменной k, при котором программа выдаёт тот же ответ, что и при входном значении k = 10.
Для Вашего удобства программа приведена на пяти языках программирования.
Бейсик Python DIM K, I AS LONG
INPUT K
I = 1
WHILE F(I) < G(K)
I = I + 1
WEND
PRINT I
FUNCTION F(N)
F = N * N * N
END FUNCTION
FUNCTION G(N)
G = 2*N + 3
END FUNCTIONdef f(n):
return n*n*n
def g(n):
return 2*n+3
k = int(input())
i = 1
while f(i) < g(k):
i+=1
print (i)Алгоритмический язык Паскаль алг
нач
цел i, k
ввод k
i := 1
нц пока f(i) < g(k)
i := i + 1
кц
вывод i
кон
алг цел f(цел n)
нач
знач := n * n * n
кон
алг цел g(цел n)
нач
знач := 2*n + 3
конvar k, i : longint;
function f(n: longint): longint;
begin
f := n * n * n;
end;
function g(n: longint): longint;
begin
g := 2*n + 3;
end;
begin
readln(k);
i := 1;
while f(i) < g(k) do
i := i+1;
writeln(i)
end.Си #include<stdio.h> long f(long n) {
return n * n * n;
}
long g(long n) {
return 2*n + 3;
}
int main()
{
long k, i;
scanf("%ld", &k);
i = 1;
while(f(i)<g(k))
i++;
printf("%ld", i);
return 0;
}
- Демо 2015 (21). Напишите в ответе число различных значений входной переменной k, при которых программа выдаёт тот же ответ, что и при входном значении k = 64.
Значение k = 64 также включается в подсчёт различных значений k. Для Вашего удобства программа приведена на пяти языках программирования.
Бейсик Python DIM K, I AS LONG
INPUT K
I = 12
WHILE I > 0 AND F(I) >= K
I = I - 1
WEND
PRINT I
FUNCTION F(N)
F = N * N
END FUNCTIONdef f(n):
return n * n
k = int(input())
i = 12
while i > 0 and f(i) >= k:
i = i - 1
print(i)Алгоритмический язык Паскаль алг
нач
цел i, k
ввод k
i := 12
нц пока i > 0 и f(i) >= k
i := i - 1
кц
вывод i
кон
алг цел f(цел n)
нач
знач := n * n
конvar k, i : longint;
function f(n: longint) : longint;
begin
f := n * n
end;
begin
readln(k);
i := 12;
while (i>0) and (f(i)>=k)
do
i := i-1;
writeln(i)
end.Си #include<stdio.h> int f(int n)
{
return n * n;
}
int main(void)
{
int k, i;
scanf("%d", &k);
i = 12;
while (i > 0 && f(i) >= k)
i--;
printf("%d", i);
}
- Демо 2014 (B14). Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на четырёх языках).
Бейсик Паскаль DIM A, B, T, M, R AS INTEGER
A = -11: B = 11
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+6
FUNCTION F(x)
F = 2*(x*x-16)*(x*x-16)+5
END FUNCTIONvar a,b,t,M,R :integer;
Function F(x:integer):integer;
begin
F := 2*(x*x-16)*(x*x-16)+5
end;
begin
a := -11; b := 11;
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+6)
end.Си Алгоритмический язык #include<stdio.h>
int F(int x)
{
return 2*(x*x-16)*(x*x-16)+5;
}
void main()
{
int a, b, t, M, R;
a = -11; b = 11;
M = a; R = F(a);
for (t = a; t <= b; t++) {
if (F(t) < R) {
M = t; R = F(t);
}
}
printf("%d", M+6);
}алг
нач
цел a, b, t, M, R
a := -11; b := 11
M := a; R := F(a)
нц для t от a до b
если F(t) < R
то M := t; R := F(t)
все
кц
вывод M+6
кон
алг цел F(цел x)
нач
знач:=2*(x*x-16)*(x*x-16)+5
кон
- Демо 2013 (B14). Определите, какое число будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на четырёх языках).
Бейсик Паскаль DIM A, B, T, M, R AS INTEGER
A = -20: B = 20
M = A: R = F(A)
FOR T = A TO B
IF F(T) < R THEN
M = T
R = F(T)
ENDIF
NEXT T
PRINT M
FUNCTION F(x)
F = 3*(x-8)*(x-8)
END FUNCTIONvar a,b,t,M,R :integer;
Function F(x:integer):integer;
begin
F := 3*(x-8)*(x-8)
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);
end.Си Алгоритмический язык #include<stdio.h>
int F(int x)
{
return 3*(x-8)*(x-8);
}
void main()
{
int a, b, t, M, R;
a = -20; b = 20;
M = a; R = F(a);
for (t=a; t<b; t++){
if (F(t)<R) {
M = t; R = F(t);
}
}
printf("%d", M);
}алг
нач
цел a, b, t, R, M
a := -20; b := 20
M := a; R := F(a)
нц для t от a до b
если F(t) < R
то
M := t; R := F(t)
все
кц
вывод M
кон
алг цел F(цел x)
нач
знач := 3*(x-8)*(x-8)
кон
- Демо 2012 (B14). Определите, какое число будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на четырех языках):
Бейсик Паскаль DIM A, B, T, M, R AS INTEGER
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
FUNCTION F (x)
F = 4 * (x - 1) * (x - 3)
END FUNCTIONvar a,b,t,M,R :integer;
Function F(x:integer):integer;
begin
F := 4*(x-1)*(x-3);
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);
END.Си Алгоритмический язык int F(int x)
{
return 4*(x-1)*(x-3);
}
void main()
{
int a, b, t, M, R;
a = -20; b = 20;
M = a; R = F(a);
for (t=a; t<=b; t++){
if ( F(t)<R ) {
M = t; R = F(t);
}
}
printf("%d", M);
}алг
нач
цел 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
кон
алг цел F(цел x)
нач
знач := 4*(x-1)*(x-3)
кон
- Демо 2011. Задание не вводилось.
- Демо 2010. Задание не вводилось.
- Демо 2009. Задание не вводилось.
- Демо 2008. Задание не вводилось.
- с114 (21). Определите, какое число будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках).
Бейсик Паскаль 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 FUNCTIONvar a,b,t,M,R :integer;
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.Си Алгоритмический язык #include<stdio.h>
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);
}
}
printf("%d", M*R);
return 0;
}алг
нач
цел 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
конPython 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)
- с124 (21). Определите, какое число будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках).
Бейсик Паскаль 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)+10;
END FUNCTIONvar a,b,t,M,R :integer;
Function F(x:integer):integer;
begin
F := 2*(x*x-9)*(x*x-9)+10;
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.Си Алгоритмический язык #include<stdio.h>
int F(int x)
{
return 2*(x*x-9)*(x*x-9)+10;
}
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);
}
}
printf("%d", M*R);
return 0;
}алг
нач
цел 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)+10
конPython def F(x):
return 2*(x*x-9)*(x*x-9)+10
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)
- с113 (21). Определите, какое число будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках):
Бейсик Паскаль 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-1)*(x*x-1)+7;
END FUNCTIONvar a,b,t,M,R :integer;
Function F(x:integer):integer;
begin
F := 2*(x*x-1)*(x*x-1)+7;
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.Си Алгоритмический язык #include <stdio.h>
int F(int x)
{
return 2*(x*x-1)*(x*x-1)+7;
}
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);
}
}
printf("%d", M+R);
return 0;
}алг
нач
цел 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-1)*(x*x-1)+7
конPython def F(x):
return 2*(x*x-1)*(x*x-1)+7
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)
- с123 (21). Определите, какое число будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках):
Бейсик Паскаль 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-1)*(x*x-1)+17;
END FUNCTIONvar a,b,t,M,R :integer;
Function F(x:integer):integer;
begin
F := 2*(x*x-1)*(x*x-1)+17;
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.Си Алгоритмический язык #include <stdio.h>
int F(int x)
{
return 2*(x*x-1)*(x*x-1)+17;
}
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);
}
}
printf("%d", M+R);
return 0;
}алг
нач
цел 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-1)*(x*x-1)+17
конPython def F(x):
return 2*(x*x-1)*(x*x-1)+17
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)
- с112 (21).
- с122 (21).
- Демо 2010. Задание не вводилось.