21. Анализ программ с циклами и подпрограммами

ЕГЭ Информатика задание №21 Демонстрационный вариант 2019 Определите число, которое будет напечатано в результате выполнения следующего алгоритма. Для Вашего удобства алгоритм представлен на пяти языках программирования.
Примечание. Функции abs и iabs возвращают абсолютное значение своего входного параметра

Бейсик

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 FUNCTION

Python

def 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;
}

ЕГЭ Информатика задание №21 Демонстрационный вариант 2018 Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма. Для Вашего удобства алгоритм представлен на пяти языках программирования.

Бейсик

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

Python

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
кон

Паскаль

ar 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;
}

Демонстрационный вариант ЕГЭ 2017 г. – задание №21. Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках программирования).

Бейсик

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 FUNCTION

Python

def 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. Для Ва­ше­го удоб­ства про­грам­ма при­ве­де­на на пяти язы­ках про­грам­ми­ро­ва­ния.

Бейсик

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 FUNCTION

Python

def 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;
 }

Ответ:


Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Паскаль Си Python
Var a,b,t,M,R:integer;
Function F(x:integer):integer;
begin
F:=3*(x-2)*(x+6);
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(R);
END.
#include <stdio.h>
int F(int x)
{
return(3*(x-2)*(x+6));
}
int main(void){
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″, R);
}
def F(x):
    return 3*(x-2)*(x+6)
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(R)

 


Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Паскаль Си Python
Var a,b,t,M,R:integer;
Function F(x:integer):integer;
begin
F:= x*x + 2*x + 10;
end;
BEGIN
a:=-10; b:=10;
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(x*x + 2*x + 10);
}
int main(void)
{
int a, b, t, M, R;
a=-10; b=10;
M=a; R=F(a);
for (t=a; t<= b; t++)
{
if (F(t)< R)
{
M=t;
R=F(t);
}
}
printf(″%d″, M);
}
 

def F(x):
return x*x + 2*x + 10

a = -10
b = 10
M = a
R = F(a)
for t in range(a,b+1):
if F(t) > R:
M = t
R = F(t)
print(M)


Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Паскаль Си Python
Var a,b,t,M,R:integer;
Function F(x:integer):integer;
begin
F:= x*x + 6*x + 10;
end;
BEGIN
a:=-10; b:=10;
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(x*x + 6*x + 10);
}
int main(void)
{
int a, b, t, M, R;
a=-10; b=10;
M=a; R=F(a);
for (t=a; t<= b; t++)
{
if (F(t)> R)
{
M=t;
R=F(t);
}
}
printf(″%d″, M);
}
def F(x):
return x*x + 6*x + 10a = -10
b = 10
M = a
R = F(a)
for t in range(a,b+1):
if F(t) > R:
M = t
R = F(t)
print(M)

Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Паскаль Си Python
var a,b,t,M,R:integer;
Function F(x: integer):integer;
begin
F := -3*(x-10)*(x+2)+2;
end;
BEGIN
a := -20; b := 20;
M := a; R:= F(a);
for t := a to b do
if (F(t)>R) then begin
M := t;
R:= F(t);
end;
write(M);
END.
#include <stdio.h>
int F(int x)
{
return(-3*(x-10)*(x+2)+2);
}
int main(void)
{
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);
}
def F(x):
return -3*(x-10)*(x+2)+2a = -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)

Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Паскаль Си Python
var 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));
}
int main(void)
{
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);
}
def F(x):
return 3*(x-8)*(x-8)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)

Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Паскаль Си Python
var a,b,t,M,R:integer;
Function F(x: integer):integer;
begin
F := 15*(5+x)*(5+x)+125;
end;
BEGIN
a := -25; b := 25;
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;
writeln(M);
END.
#include <stdio.h>
int F(int x)
{
return(15*(5+x)*(5+x)+125);
}
int main(void)
{
int a, b, t, M, R;
a = -25; b = 25;
M = a; R= F(a);
for (t=a; t<= b; t++)
{
if (F(t) > R))
{
M = t;
R= F(t);
}
}
printf(″%d\n″, M);
}
def F(x):
return 15*(5+x)*(5+x)+125a = -25
b = 25
M = a
R = F(a)
for t in range(a,b+1):
if F(t) > R:
M = t
R = F(t)
print(M)

Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Паскаль Си Python
var a, b, t, N :integer;
Function F(x: integer):integer;
begin
F := 16*(9-x)*(9-x)-127;
end;
BEGIN
a := -20; b := 20;
N := 0;
for t := a to b do begin
if (F(t) >= 0) then begin
N := N+1;
end;
end;
write(N);
END.
#include <stdio.h>
int F(int x)
{
return(16*(9-x)*(9-x)-127);
}
int main(void)
{
int a, b, t, N;
a = -20; b = 20;
N = 0;
for (t=a; t<= b; t++)
if (F(t) >= 0) N++;
printf(″%d″, N);
}
def F(x):
return 16*(9-x)*(9-x)-127a = -20
b = 20
N = 0
for t in range(a,b+1):
if F(t) >= 0:
N += 1
print(N)

Определите, количество чисел K, для которых следующая программа выведет такой же результат, что и для K = 20:

Паскаль Си Python
var i, k: integer;
function F(x:integer):integer;
begin
F:=x*x+5*x;
end;
begin
i := 15;
readln(K);
while (i > 0) and (F(i) > K) do
i:=i-1;
writeln(i);
end.
#include <stdio.h>
int F(int x)
{
return(x*x+5*x);
}
int main(void){
int i, K;
i = 15;
scanf(″%d″, &k);
while ( i > 0 && F(i) > K )
i—;
printf(″%d″, i);
}
def F(x):
    return x*x + 5*x
i = 15
k = int(input())
while (i > 0) and (F(i) > k):
    i -= 1
print(i)

 


Напишите в ответе количество различных значений входной переменной k, при которых программа выдаёт тот же ответ, что и при входном значении k = 64. Значение k = 64 также включается в подсчёт различных значений k.

Паскаль Си Python
var k, i : longint;
function f(n: longint) : longint;
begin
f := n * n + 20
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 + 20);
}
int main(void)
{
int i, K;
scanf(″%d″, &k);
i = 12;
while (i > 0 && f(i) >= k)
i = i-1;
printf(″%d″, i);
}
def f(n):
    return n*n + 20
i = 12
k = int(input())
while (i > 0) and (f(i) >= k):
    i -= 1
print(i)

 


Напишите в ответе количество различных значений входной переменной k, при которых программа выдаёт тот же ответ, что и при входном значении k = 18. Значение k = 18 также включается в подсчёт различных значений k.

Паскаль Си Python
var k, i : longint;
function F(x: longint) : longint;
begin
if x < 2 then
F:= 1
else F:=3* F(x-1) — F(x-2)
end;
begin
i := 11;
readln(K);
while (i> 0) and (F(i) > K) do
i:=i-1;
writeln(i)
end.
#include <stdio.h>
int f(int n)
{
if (x < 2) return(1);
else return(3*f(x-1) — f(x-2));
}
int main(void)
{
int i, K;
i = 11;
scanf(″%d″, &k);
while ( i > 0 && f(i) > K)
i = i-1;
printf(″%d″, i);
}
def f(x):
if x < 2:
return 1
else:
return 3*f(x-1) — f(x-2)i = 11
k = int(input())
while (i > 0) and (f(i) > k):
i -= 1
print(i)

Напишите в ответе наименьшее значение входной переменной k, при котором программа выдаёт тот же ответ, что и при входном значении k = 18.

Паскаль Си Python
var k, i : longint;
function f(n: longint): longint;
begin
f := n * n;
end;
function g(n: longint): longint;
begin
g := 2*n + 5;
end;
begin
readln(k);
i := 1;
while f(i) < g(k) do
i := i+1;
writeln(i)
end.
 #include <stdio.h>
int f(int n)
{
return(n*n);
}
int g(int n)
{
return(2*n + 5);
}
int main(void)
{
int k, i;
scanf(″%d″, &k);
i = 1;
while (f(i) < g(k))
i = i+1;
printf(″%d″, i);
}
def f(n):
return n*ndef g(n):
return 2*n + 5k = int(input())
i = 1
while (f(i) < g(k)):
i = i + 1
print(i)

Определите, количество чисел k, для которых следующая программа выведет такой же результат, что и для k = 12?

Паскаль PythonC C++
var k, i : longint;
function f(n:
longint): longint;
begin
	f:= 3*n*n - 2*n;
end;
begin
readln(k);
i := 1;
while f(i) < k do
	i := i + 1;
if f(i)-k <= f(i-1) then
	writeln(i)
else writeln(i-1);
end.
def f(n):
	return 3*n*n - 2*n
k = int(input())
i = 1
while f(i) < k:
	i += 1
if f(i)-k <= f(i-1):
	print(i)
else:
	print(i-1)

 

#include <iostream>
using namespace std;
long f(long n) {
	return 3*n*n - 2*n;
}
int main(){
long k, i;
cout >> k;
i = 1;
while ( f(i) < k )
	i++;
if (f(i)-k <= f(i-1))
	cout << i;
else
	cout << i-1;
return 0;
}

Определите, количество чисел k, для которых следующая программа выведет такой же результат, что и для k = 13?

Паскаль Python C
var k, i : longint;
function f(n: longint):
longint;
begin
  f:= n*n*n - 5*n;
end;
begin
  readln(k);
  i := 1;
  while f(i) < k do
  i := i + 1;
  if 2*f(i)-k <= k-f(i-1) then
     writeln(i)
  else writeln(i-1);
end.
def f(n):
    return n*n*n - 5*n
k = int(input())
i = 1
while f(i) < k:
    i += 1
if 2*f(i)-k <= kf(i-1):
    print(i)
else:
    print(i-1)

 

#include <stdio.h>
long f(long n) {
  return n*n*n - 5*n;
}
int main()
{
long k, i;
scanf("%ld", &k);
i = 1;
while ( f(i) < k )
  i++;
if (2*f(i)-k <= k-f(i1))
  printf("%ld", i);
else
  printf("%ld", i-1);
return 0;
}

Добавить комментарий