ЕГЭ, вопрос 22: П. Умение анализировать алгоритм, содержащий ветвление и цикл
Проверяемые элементы содержания по спецификации (2019): Умение анализировать алгоритм, содержащий ветвление и цикл.
Кодификатор 1.6.1/1.1.4. Уровень сложности П, 1 балл.
Время выполнения — 7 минут. [Было 6, потом — 5 при увеличении сложности]
Достаточно сложное логическое задание. На данный момент я затрудняюсь однозначно оценить время.
Доступ к размещенным в этом месте материалам ограничен и предоставляется следующим категориям:
1. Подготовка к ОГЭ. 2. Подготовка к ЕГЭ. 3. VIP-пользователь. 4. Благотворитель.
Задание 1. Сколько раз повторится цикл? Два раза (А=2). Но это зависит от изменения Х, а от данной переменной просто "отрубается последний разряд". Это означает, что число Х должно быть двузначным.
В переменную В накапливается сумма «отрубленных хвостов» и она должна быть равна 10. Из двух слагаемых. Для минимального Х. Дальше продолжать не вижу смысла.
Задание 2. Те же закономерности, но Х должен быть наибольшим.
Задания
- Демо 2021 (22).
- Демо 2020 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа:
L и M. Укажите наименьшее число x, при вводе которого алгоритм печатает сначала 6, а потом 7.
Бейсик Python 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
ENDIF
X = X \ 2
WEND
PRINT L
PRINT Mx = 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.C++ #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;
}
- Демо 2019 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа:
L и M. Укажите наименьшее число x, при вводе которого алгоритм печатает сначала 5, а потом 7.
Бейсик Python 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 Mx = 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
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;
}
- Демо 2018 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: L и M. Укажите наименьшее
число x, при вводе которого алгоритм печатает сначала 5, а потом 7.
Бейсик Python 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 Mx = 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;
}
- D2018 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное десятичное число x, этот алгоритм печатает два числа: L и M.
Укажите наибольшее число x, при вводе которого алгоритм печатает сначала 14, а потом 3.
Бейсик Python 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 + X MOD 8
END IF
X = X \ 8
WEND
PRINT L
PRINT Mx = int(input())
L = 0
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 := 0
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 := 0;
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.C++ #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 + x % 8;
}
x = x / 8;
}
cout << L << endl << M << endl;
return 0; }
- R2018 (20). Укажите наибольшее десятичное число, при вводе которого на экране сначала напечатается 3, а затем 6.
Бейсик Python DIM X, L, M AS INTEGER
INPUT X
L = 0
M = 0
WHILE X > 0
L = L + 1
IF X MOD 2 <> 0 THEN
M = M + (X MOD 8)
ENDIF
X = X \ 8
WEND
PRINT L
PRINT Mx = int(input())
L = 0
M = 0
while x > 0 :
L = L+1
if (x % 2) != 0:
M = M + x % 8
x = x // 8
print(L) print(M)Си++ Паскаль #include <iostream>
using namespace std;
int main(void)
{
int L, M, x;
cin >> x;
L = 0;
M = 0;
while (x > 0) {
L = L + 1;
if (x % 2 != 0) {
M = M + x % 8;
}
x = x / 8;
}
cout << L << " " << M;
}var x, L, M: integer;
begin
readln(x);
L:=0; M:=0;
while x > 0 do begin
L:=L + 1;
if (x mod 2) <> 0 then
M:= M + x mod 8;
x:= x div 8;
end;
writeln(L);
write(M);
end.
- Демо 2017 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное число x, этот алгоритм печатает число R. Укажите такое число x,
при вводе которого алгоритм печатает двузначное число, сумма цифр которого равна 16. Если таких чисел x несколько, укажите наименьшее из них.
Бейсик Python 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 Rx = 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.
Бейсик Python 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 Mx = 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);
}
- Демо 2015 (20). Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: a и b.
Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 15.Бейсик Python DIM X, A, B AS INTEGER
INPUT X
A=0: B=1
WHILE X > 0
A = A+1
B = B*(X MOD 10)
X = X \ 10
WEND
PRINT A
PRINT Bx = int(input())
a = 0
b = 1
while x > 0:
a = a + 1
b = b * (x % 10)
x = x // 10
print(a)
print(b)Алгоритмический язык Паскаль алг
нач
цел x, a, b
ввод x
a:=0; b:=1
нц пока x>0
a:=a+1
b:=b*mod(x,10)
x:=div(x,10)
кц
вывод a, нс, b
конvar x, a, b: integer;
begin
readln(x);
a:=0; b:=1;
while x>0 do
begin
a:=a+1;
b:=b*(x mod 10);
x:= x div 10
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 + 1;
b = b * (x % 10);
x = x / 10;
}
printf("%d\n%d", a, b);
}
- Демо 2014 (B8). Ниже на четырёх языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: a и b. Укажите наименьшее из таких чисел x,
при вводе которых алгоритм печатает сначала 13, а потом 5.
Бейсик Паскаль DIM X, A, B, C AS INTEGER
INPUT X
A = 0: B = 10
WHILE X > 0
C = X MOD 10
A = A + C
IF C < B THEN B = C
X = X \ 10
WEND
PRINT A
PRINT Bvar x, a, b, c: integer;
begin
readln(x);
a := 0; b := 10;
while x>0 do
begin
c := x mod 10;
a := a+c;
if c<b then b := c;
x := x div 10;
end;
writeln(a); write(b);
end.Си Алгоритмический язык #include<stdio.h>
void main()
{
int x, a, b, c;
scanf("%d", &x);
a = 0; b = 10;
while (x>0) {
c = x%10;
a = a+c;
if (c<b)
b = c;
x = x/10;
}
printf("%d\n%d", a, b);
}алг
нач
цел x, a, b, c
ввод x
a := 0; b := 10
нц пока x>0
c := mod(x,10)
a := a+c
если c<b
то b := c
все
x := div(x,10)
кц
вывод a, нс, b
кон
- Демо 2013 (B5). Определите, что будет напечатано в результате выполнения программы (записанной ниже на разных языках программирования).
Бейсик Паскаль DIM N, S AS INTEGER
N = 0
S = 0
WHILE S <= 35
N = N + 1
S = S + 4
WEND
PRINT Nvar n, s: integer;
begin
n := 0;
s := 0;
while s <= 35 do
begin
n := n + 1;
s := s + 4
end;
write(n)
end.Си Алгоритмический язык #include<stdio.h>
void main()
{
int n, s;
n = 0;
s = 0;
while (s <= 35)
{
n = n + 1;
s = s + 4;
}
printf("%d", n);
}алг
нач
цел n, s
n := 0
s := 0
нц пока s <= 35
n := n + 1
s := s + 4
кц
вывод n
кон
- Демо 2013 (B8). Ниже на четырёх языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: a и b. Укажите наименьшее из таких чисел x,
при вводе которых алгоритм печатает сначала 2, а потом 21.
Бейсик Паскаль DIM X, A, B AS INTEGER
INPUT X
A=0: B=1
WHILE X > 0
A = A+1
B = B*(X MOD 10)
X = X \ 10
WEND
PRINT A
PRINT Bvar x, a, b: integer;
begin
readln(x);
a:=0; b:=1;
while x>0 do
begin
a:=a+1;
b:=b*(x mod 10);
x:= x div 10
end;
writeln(a); write(b);
end.Си Алгоритмический язык #include<stdio.h>
void main()
{
int x, a, b;
scanf("%d", &x);
a=0; b=1;
while (x>0){
a=a+1;
b=b*(x%10);
x= x/10;
}
printf("%d\n%d", a, b);
}алг
нач
цел x, a, b
ввод x
a:=0; b:=1
нц пока x>0
a:=a+1
b:=b*mod(x,10)
x:=div(x,10)
кц
вывод a, нс, b
кон
- Демо 2012 (B7). Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа L и M. Укажите наибольшее из таких чисел x,
при вводе которых алгоритм печатает сначала 3, а потом 7.
Бейсик Паскаль DIM X, L, M AS INTEGER
INPUT X
L=0: M=0
WHILE X > 0
L = L+1
IF M < (X MOD 10) THEN
M = X MOD 10
ENDIF
X = X \ 10
WEND
PRINT L
PRINT Mvar x, L, M: integer;
begin
readln(x);
L := 0; M := 0;
while x>0 do
begin
L := L+1;
if M < (x mod 10) then
begin
M := x mod 10;
end;
x := x div 10;
end;
writeln(L); write(M);
end.Си Алгоритмический язык #include<stdio.h>
void main()
{
int x, L, M;
scanf("%d", &x);
L=0; M=0;
while (x>0){
L=L+1;
if M < x % 10 {
M = x % 10
}
x= x/10;
}
printf("%d\n%d", L, M);
}алг
нач
цел x, L, M
ввод x
L := 0; M := 0
нц пока x>0
L := L+1
если M < mod(x,10)
то
M := mod(x,10)
все
x := div(x,10)
кц
вывод L, нс, M
кон
- Демо 2011 (A17). В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, записанный на
разных языках программирования, в котором значения элементов массива сначала задаются, а затем меняются.
Бейсик Паскаль FOR i=0 TO 10
A(i)=i-1
NEXT i
FOR i=10 TO 1 STEP -1
A(i-1)=A(i)
NEXT ifor i:=0 to 10 do
A[i]:=i-1;
for i:=10 downto 1 do
A[i-1]:=A[i];Си Алгоритмический язык for (i=0;i<=10;i++)
A[i]=i-1;
for (i=10;i>=1;i--)
A[i-1]=A[i];нц для i от 0 до 10
A[i]:=i-1
кц
нц для i от 10 до 1 шаг -1
A[i-1]:=A[i]
кц
1) 9 9 9 9 9 9 9 9 9 9 9
2) 0 1 2 3 4 5 6 7 8 9 9
3) 0 1 2 3 4 5 6 7 8 9 10
4) -1 -1 0 1 2 3 4 5 6 7 8
- Демо 2010 ().
- Демо 2009 ().
- (т2-2012/1).Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 10.
DIM X, A, B AS INTEGER INPUT X A = 0: B = 0 WHILE X > 0 A = A + 1 B = B + (X MOD 10) X = X \ 10 WEND PRINT A PRINT B
- (т2-2012/2).Ниже на 4-х языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 10.
DIM X, A, B AS INTEGER INPUT X A = 0: B = 0 WHILE X > 0 A = A + 1 B = B + (X MOD 10) X = X \ 10 WEND PRINT A PRINT B
- с114 (20). Ниже на различных языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b.
Сколько существует таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 0?
Бейсик Паскаль DIM X, A, B AS INTEGER
INPUT X
A = 0: B = 1
WHILE X > 0
A = A + 1
B = B*(X MOD 10)
X = X\10
WEND
PRINT A
PRINT Bvar x, a, b: integer;
begin
readln(x);
a := 0; b := 1;
while x > 0 do
begin
a := a+1;
b := b*(x mod 10);
x := x div 10;
end;
writeln(a); write(b);
end.Си Алгоритмический язык #include<stdio.h>
int main()
{
int x, a, b;
scanf("%d", &x);
a = 0; b = 1;
while (x > 0){
a = a+1;
b = b*(x%10);
x = x/10;
}
printf("%d\n%d", a, b);
return 0;
}алг
нач
цел x, a, b
ввод x
a := 0; b := 1
нц пока x > 0
a := a+1
b := b*mod(x,10)
x := div(x,10)
кц
вывод a, нс, b
конPython x=int(input())
a=0; b=1
while x > 0:
a = a+1
b = b*(x%10)
x = x//10
print(a,"\n",b)
- с124 (20). Ниже на различных языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b.
Сколько существует таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 24?
Бейсик Паскаль DIM X, A, B AS INTEGER
INPUT X
A = 0: B = 1
WHILE X > 0
A = A + 1
B = B*(X MOD 10)
X = X\10
WEND
PRINT A
PRINT Bvar x, a, b: integer;
begin
readln(x);
a := 0; b := 1;
while x > 0 do
begin
a := a+1;
b := b*(x mod 10);
x := x div 10;
end;
writeln(a); write(b);
end.Си Алгоритмический язык #include<stdio.h>
int main()
{
int x, a, b;
scanf("%d", &x);
a = 0; b = 1;
while (x > 0){
a = a+1;
b = b*(x%10);
x = x/10;
}
printf("%d\n%d", a, b);
return 0;
}алг
нач
цел x, a, b
ввод x
a := 0; b := 1
нц пока x > 0
a := a+1
b := b*mod(x,10)
x := div(x,10)
кц
вывод a, нс, b
конPython x=int(input())
a=0; b=1
while x > 0:
a = a+1
b = b*(x%10)
x = x//10
print(a,"\n",b)
- с113 (20). Ниже на пяти языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 16.
Бейсик Паскаль DIM X, A, B, D AS INTEGER
INPUT X
A = 0; B = 0; D = 0
WHILE X > 0
IF (D MOD 2) = 0 THEN
A = A + (X MOD 10)
ELSIF
B = B + (X MOD 10)
END IF
X = X \ 10
D = D + 1
WEND
PRINT A
PRINT Bprogram B14;
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.Си Алгоритмический язык #include
int main(){
int x, a, b, d;
scanf("%d", &x);
a = 0; b = 0; d = 0;
while (x > 0) {
if (d%2 == 0) {
a = a+x%10;
}
else{
b = b+x%10;
}
x = x / 10;
d++;
}
printf("%d\n%d", a, b);
return 0;
}алг
нач
цел x, a, b, d
ввод x
a := 0; b := 0; d := 0
нц пока x > 0
если mod(d,2)=0 то
a := a + mod(x,10)
иначе
b := b + mod(x,10)
все
x := div(x,10)
d:=d+1
кц
вывод a, нс, b
конPython 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)
- с123 (20). Ниже на пяти языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 4, а потом 17.
Бейсик Паскаль DIM X, A, B, D AS INTEGER
INPUT X
A = 0; B = 0; D = 0
WHILE X > 0
IF (D MOD 2) = 0 THEN
A = A + (X MOD 10)
ELSIF
B = B + (X MOD 10)
END IF
X = X \ 10
D = D + 1
WEND
PRINT A
PRINT Bprogram B15;
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.Си Алгоритмический язык #include <stdio.h>
int main(){
int x, a, b, d;
scanf("%d", &x);
a = 0; b = 0; d = 0;
while (x > 0) {
if (d%2 == 0) {
a = a+x%10;
}
else{
b = b+x%10;
}
x = x / 10;
d++;
}
printf("%d\n%d", a, b);
return 0;
}алг
нач
цел x, a, b, d
ввод x
a := 0; b := 0; d := 0
нц пока x > 0
если mod(d,2)=0 то
a := a + mod(x,10)
иначе
b := b + mod(x,10)
все
x := div(x,10)
d:=d+1
кц
вывод a, нс, b
конPython 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)
- с112 (20).
- с122 (20).
- ш115 (20).
- ш125 (20).
- ш114 (20).
- ш124 (20).
- ш113 (20).
- ш123 (20).
- ш112 (20).
- ш122 (20).
- ш111 (20).
- ш121 (20).