22. Анализ программы с циклами и условными операторами

ЕГЭ Информатика задание №20 Демонстрационный вариант 2019 

Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное десятичное число x, этот алгоритм печатает два числа: L и M. Укажите наибольшее число x, при вводе которого алгоритм печатает сначала 21, а потом 3.

Бейсик

DIM X, L, M AS INTEGER
INPUT X
L = 1
M = 0
WHILE X > 0
 M = M + 1
 IF X MOD 2 <> 0 THEN
   L = L * (X MOD 8)
 END IF
 X = X \ 8
WEND
PRINT L
PRINT M
Python

x = int(input())
L = 1
M = 0
while x > 0:
    M = M + 1
    if x % 2 != 0:
        L = L * (x % 8)
    x = x // 8
print(L)
print(M)
Алгоритмический язык

алг
нач
цел x, L, M
ввод x
 L := 1
 M := 0
 нц пока x > 0
   M := M + 1
   если mod(x,2) <> 0 то
     L := L * mod(x,8)
   все
   x := div(x,8)
 кц
 вывод L, нс, M
кон
Паскаль

var x, L, M: integer;
begin
 readln(x);
 L := 1;
 M := 0;
 while x > 0 do
 begin
   M := M + 1;
   if x mod 2 <> 0 then
     L := L * (x mod 8);
   x := x div 8
 end;
 writeln(L);
 writeln(M)
end.
С++

#include <iostream>
using namespace std;
int main(){
 int x, L, M;
 cin >> x;
 L = 1;
 M = 0;
 while (x > 0) {
    M = M + 1;
    if(x % 2 != 0) {
       L = L * (x % 8);
    }
    x = x / 8;
 }
 cout << L << endl << M << endl;
 return 0;
}

ЕГЭ Информатика задание №20 Демонстрационный вариант 2018 

Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: L и M. Укажите наименьшее число x, при вводе которого алгоритм печатает сначала 5, а потом 7.

Бейсик

DIM X, L, M AS INTEGER
INPUT X
L = 0
M = 0
WHILE X > 0
	M = M + 1
	IF X MOD 2 <> 0 THEN
		L = L + 1
END IF
X = X \ 2
WEND
PRINT L
PRINT M
Python

x = int(input())
L = 0
M = 0
while x > 0:
	M = M + 1
	if x % 2 != 0:
		L = L + 1
	x = x // 2
print(L)
print(M)
Алгоритмический язык

алг
нач
цел x, L, M
ввод x
L := 0
M := 0
нц пока x > 0
	M := M + 1
	если mod(x,2) <> 0
		то
		L := L + 1
	все
	x := div(x,2)
кц
вывод L, нс, M
кон
Паскаль

var x, L, M: integer;
begin
readln(x);
L := 0;
M := 0;
while x>0 do
begin
	M := M + 1;
	if x mod 2 <> 0 then
		L := L + 1;
	x := x div 2;
end;
writeln(L);
writeln(M);
end.
С++

#include <iostream>
using namespace std;
int main(){
int x, L, M;
cin >> x;
L = 0;
M = 0;
while (x > 0) {
	M = M + 1;
	if(x % 2 != 0) {
		L = L + 1;
	}
	x = x / 2;
}
cout << L << endl << M << endl;
return 0;
}

Демонстрационный вариант ЕГЭ 2017 г. – задание №20. Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное число x, этот алгоритм печатает число R. Укажите такое число x, при вводе которого алгоритм печатает двузначное число, сумма цифр которого равна 16. Если таких чисел x несколько, укажите наименьшее из них.

Бейсик

DIM X,D,R AS LONG
INPUT X
R = 0
WHILE X>0
	D = X MOD 10
	R = 10*R + D
	X = X \ 10
WEND
PRINT R

Python

x = int(input())
R = 0
while x>0:
	d = x % 10
	R = 10*R + d
	x = x // 10
print(R)

Алгоритмический язык

алг
нач
	цел x, d, R
	ввод x
	R := 0
	нц пока x>0
		d := mod(x, 10)
		R := 10*R + d
		x := div(x, 10)
	кц
	вывод R
кон

Паскаль

var
	x,d,R: longint;
begin
	readln(x);
	R := 0;
	while x>0 do
	begin
		d := x mod 10;
		R := 10*R + d;
		x := x div 10
	end;
	writeln(R)
end.

Си

#include <stdio.h>
int main()
{
	long x,d,R;
	scanf("%ld", &x);
	R = 0;
	while (x>0)
	{
		d = x % 10;
		R = 10*R + d;
		x = x / 10;
	}
	printf("%ld", R);
return 0;
}


Демонстрационный вариант ЕГЭ 2016 г. – задание №20. Ниже на пяти язы­ках про­грам­ми­ро­ва­ния за­пи­сан ал­го­ритм. По­лу­чив на вход число x, этот ал­го­ритм пе­ча­та­ет число M. Из­вест­но, что x > 100. Ука­жи­те наи­мень­шее такое (т.е. боль­шее 100) число x, при вводе ко­то­ро­го ал­го­ритм пе­ча­та­ет 26.

Бейсик

DIM X, L, M AS INTEGER
 INPUT X
 L = X
 M = 65
 IF L MOD 2 = 0 THEN
    M = 52
 ENDIF
 WHILE L <> M
 IF L > M THEN
    L = L – M
 ELSE
    M = M – L
 ENDIF
 WEND
 PRINT M

Python

x = int(input())
L = x
M = 65
if L % 2 == 0:
    M = 52
while L != M:
    if L > M:
        L = L - M
    else:
        M = M - L
print(M)

Алгоритмический язык

алг
 нач
    цел x, L, M
    ввод x
    L := x
    M := 65
    если mod(L,2)=0
        то
            M := 52
    все
    нц пока L <> M
        если L > M
            то
                L := L – M
            иначе
                M := M – L
        все
    кц
    вывод M
 кон

Паскаль

var x, L, M: integer;
 begin
    readln(x);
    L := x;
    M := 65;
    if L mod 2 = 0 then
        M := 52;
    while L <> M do
        if L > M then
            L := L - M
        else
            M := M – L;
    writeln(M);
 end.

Си

#include<stdio.h>
 void main()
 {
    int x, L, M;
    scanf("%d", &x);
    L = x;
    M = 65;
    if (L % 2 == 0)
        M = 52;
    while (L != M){
        if(L > M)
            L = L - M;
        else
            M = M - L;
    }
    printf("%d", M);
 }

Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 7.

Паскаль Си Python
var x, L, M: integer;

begin
readln(x);
L:=0; M:=0;
while x > 0 do begin
L:= L + 1;
M:= M + x mod 10;
x:= x div 10;
end;
writeln(L); write(M);
end.

#include <stdio.h>

int main(void)
{
int L, M, x;
scanf(″%d″, &x);
L = 0; M = 0;
while (x > 0)
{
L = L + 1;
M = M + (x % 10);
x = x / 10;
}
printf(″%d\n%d″, L, M);
}

x = int(input())
L = 0; 
M = 0
while x > 0:
    L = L + 1
    M = M + (x % 10)
    x = x // 10
print("%d\n%d" % (L, M))

 


Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 8.

Паскаль Си Python
var x, L, M: integer;
begin
readln(x);
L:=0; M:=0;
while x > 0 do begin
L:= L + 1;
if x mod 2 = 1 then
M:= M + x mod 10;
x:= x div 10;
end;
writeln(L); write(M);
end.
#include <stdio.h>
int main(void)
{
int L, M, x;
scanf(″%d″, &x);
L = 0; M = 0;
while (x > 0)
{
L = L + 1;
if (x % 2 == 1)
M = M + (x % 10);
x = x / 10;
}
printf(″%d\n%d″, L, M);
}
x = int(input())
L = 0; 
M = 0
while x > 0:
    L = L + 1
    if x % 2 == 1:
    M = M + (x % 10)
    x = x // 10
print("%d\n%d" % (L, M))

 


Ниже записана программа. Получив на вход число , эта программа печатает два числа,  и . Укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 10.

Паскаль Си Python
var x, L, M: integer;
begin
readln(x);
L:=0; M:=0;
while x > 0 do begin
L:=L+1;
if (M < x) and (x mod 2 = 1) then begin
M:= (x mod 10) * 2;
end;
x:= x div 10;
end;
writeln(L); write(M);
end.
 #include <stdio.h>
int main(void)
{
int L, M, x;
scanf(″%d″, &x);
L = 0; M = 0;
while (x > 0)
{
L = L+1;
if ((M < x) && (x % 2 == 1)
M = (x % 10) * 2;
x = x / 10;
}
printf(″%d\n%d″, L, M);
}
x = int(input())
L = 0
M = 0
while x > 0:
    L = L + 1
    if (M < x) and (x % 2 == 1):
        M = (x % 10) * 2
    x = x // 10
print("%d\n%d" % (L, M))

 


Ниже записан алгоритм. После выполнения алгоритма было напечатано 3 числа. Первые два напечатанных числа – это числа 13 и 65. Какое наибольшее число может быть напечатано третьим

Паскаль Си Python
 var x, y, z: integer;
r, a, b: integer;
begin
readln(x, у);
if у > x then begin
z:= x; x:= у; у:= z;
end;
a:= x; b:= y;
while b > 0 do begin
r:= a mod b;
a:= b;
b:= r;
end;
writeln(a);
writeln(x);
write(у);
end.
 #include <stdio.h>
int main(void)
{
int r, a, b, x, y, z;
scanf(″%d%d″, &x, &y);
if (у > x)
{
z = x; x = у; у = z;
}
a = x; b = y;
while (b > 0)
{
r = a % b;
a = b;
b = r;
}
printf(“%d\n%d\n%d”, a, x, y);
}
x = int(input())
y = int(input())
if (y > x):
    z = x
    x = y
    y = z
a = x; 
b = y
while b > 0:
    r = a % b
    a = b
    b = r
print("%d\n%d\n%d" % (a, x, y))

 


Ниже записан алгоритм. Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 4, а потом 13.

Паскаль Си Python
 var x, a, b: integer;
begin
readln(x);
a := 0; b := 1;
while x > 0 do begin
a := a+2;
b := b*(x mod 1000);
x := x div 1000;
end;
writeln(a); write(b);
end.
 #include <stdio.h>
int main(void)
{
int x, a, b;
scanf(″%d″, &x);
a = 0; b = 1;
while (x > 0)
{
a = a+2;
b = b*(x % 1000);
x = x / 1000;
}
printf(″%d\n%d″, a, b);
}
x = int(input())
a = 0; 
b = 1
while x > 0:
    a = a + 2
    b = b * (x % 1000)
    x = x // 1000
print("%d\n%d" % (a, b))

 


Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 100. Укажите наименьшее такое (т. е. большее 100) число x, при вводе которого алгоритм печатает 16.

Паскаль Си Python
 var x, L, M: integer;
begin
readln(x);
L := x-16;
M := x+16;
while L <> M do
if L > M then
L := L — M
else
M := M – L;
writeln(M);
end.
 #include <stdio.h>
int main(void)
{
int x, L, M;
scanf(″%d″, &x);
L = x-16; M = x+16;
while (L != M)
{
if(L > M)
L = L — M;
else
M = M – L;
}
printf(″%d″, M);
}
x = int(input())
L = x-16
M = x+16
while L != M:
if L > M:
    L = L - M
else:
    M = M – L
print(M)

 


Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 120.

Паскаль

var x, L, M:
integer;
begin
readln(x);
L:=0; M:=1;
while x > 0 do begin
	L:=L+1;
	M:= M*(x mod 8);
	x:= x div 8;
end;
writeln(L);
write(M);
end.
Python

x = int(input())
L = 0
M = 1
while x > 0 :
	L = L+1
	M = M*(x % 8)
	x = x // 8
print(L)
print(M)

 

С++

#include <iostream>
using namespace std;
int main()
{
int L, M, x;
cin >> x;
L = 0; M = 1;
while (x > 0) {
	L = L + 1;
	M = M*(x % 8);
	x = x / 8;
}
cout << L << endl << M ;
return 0;
}

 

 


Укажите наименьшее из таких чисел x, при вводе которого алгоритм печатает сначала 2, а потом 8.

Паскаль

var x, a, b: longint;
begin
readln(x);
a := 0; b := 0;
while x > 0 do begin
	if x mod 2 > 0 then
		a := a + 1
	else
		b := b + x mod 6;
	x := x div 6;
end;
writeln(a); write(b);
end.
Python

x = int(input())
a=0; b=0
while x > 0:
	if x%2 > 0:
		a += 1
	else:
		b += x%6
	x = x//6
print(a, b)

 

С++

#include <iostream>
using namespace std;
int main()
{
int x, a, b;
cin >> x;
a = 0; b = 0;
while (x > 0) {
	if (x%2 > 0) a += 1;
	else b += x%6;
x = x / 6;
}
cout << a << endl << b << endl;
return 0;
}

Источник: СтатГрад 2017−2018


Ниже на пяти языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 6, а потом 15.

Паскаль Python
var x, a, b, d: integer;
begin
readln(x);
a := 0; b := 0; d := 0;
while x > 0 do
begin
	if d mod 2= 0 then
		a := a + x mod 10
	else
		b := b + x mod 10;
x := x div 10;
d:=d + 1
end;
writeln(a); write(b);
end.
x = int(input())
a=0; b=0; d = 0
while x>0:
	if d%2==0:
		a += x%10
	else:
		b += x%10
	x = x//10
	d = d+1
print(a, "\n", b)

 

Источник: onlyege