Решение задач ЕГЭ. Анализ программы с циклом. Анализ программы с циклами и ветвлениями

1.

Решение задач ЕГЭ по
информатике
Анализ программы с циклом.
Анализ программы с циклами и ветвлениями.
Лошманова Арина
Ярихович Мила

2.

Анализ программы с циклом
Номер задания: 6
Раздел информатики: Информация и информационные
процессы. Языки программирования
Проверяемые элементы содержания: Знания основных
конструкций языка программирования, понятия
переменной оператора, присваивания
Уровень сложности: Базовый
Первичный балл: 1
Процент выполнения: 81%

3.

Демо-версия 2022

4.

Решение 1 способ.

5.

1) по программе видно, что в
конце программы выводится
значение переменной n
2) из программы видно, что
начальное значение
переменной 1
3) на каждом повторении цикла
значение увеличивается в 2
раза
4) Поскольку 64=2^6, чтобы
получить 64 нужно выполнить
тело цикла 6 раз, но так как нам
нужно будет наибольшее то
посчитаем когда появляется 32
5) при каждом повторении
значение переменной
увеличивается на 5, то получим
s=s0+6*5=s0+30,
s=s0+5*5=s0+25 где s0 –
введенное число
6) Цикл останавливается при
s>=51, то есть s0+35>=51, решая
неравенство получаем 21,
s0+25>=51 получаем 26, но
так как у нас должно
делиться на 10, то получим
210 и 260, при 260 уже
выводится 32, значит
последнее число будет
259

6.

Разновидности заданий
Две линейные функции
Сумма двух линейных функций
Арифметическая прогрессия
Условие выполнения цикла while

7.

8.

9.

Запишите число, которое будет напечатано в результате выполнения следующей
программы. Для Вашего удобства программа представлена на пяти языках
программирования.
Бейсик
DIM S, N AS INTEGER
S=0
N = 40
WHILE S + N < 100
S = S + 20
N=N−5
WEND
PRINT S
Python
s=0
n = 40
while s + n < 100:
s = s + 20
n=n−5
print(s)
Паскаль
var s, n: integer;
begin
s := 0;
n := 40;
while s + n < 100 do
begin
s := s + 20;
n := n − 5;
end;
writeln(s)
end.
Алгоритмический язык
алг
нач
цел s, n
s := 0
n := 40
нц пока s + n < 100
s := s + 20
n := n − 5
кц
вывод s
кон
Си++
#include <iostream>
using namespace std;
int main()
{
int s = 0, n = 40;
while (s + n < 100) {
s = s + 20;
n = n − 5;
}
cout << s;
return 0;
}

10.

Бейсик
Определите, что будет
напечатано в результате
работы
следующего
фрагмента программы:
DIM K, S AS INTEGER
S=0
K=0
WHILE S < 80
S = S + 2*K
K=K+4
WEND
PRINT S
Python
s=0
k=0
while s < 80:
s += 2*k
k += 4
print(s)
Паскаль
var k, s: integer;
begin
s:=0;
k:=0;
while s < 80 do begin
s:=s+2*k;
k:=k+4;
end;
write(s);
end.
Алгоритмический язык
алг
нач
цел k, s
s := 0
k := 0
нц пока s < 80
s := s + 2*k
k := k + 4
кц
вывод s
кон
Си++
#include <iostream>
using namespace std;
int main() {
int s, k;
s = 0, k = 0;
while (s < 80) {
s = s + 2*k;
k = k + 4;
}
cout << s << endl;
return 0;
}

11.

Анализ программы с циклами и
ветвлениями
Номер задания: 22
Раздел информатики: Информация и информационные
процессы. Элементы теории алгоритмов.
Проверяемые элементы содержания: Умение
анализировать алгоритм, содержащий ветвление и цикл
Уровень сложности: Профильный
Первичный балл: 1
Процент выполнения: 70,4%

12.

13.

14.

1)
2)
3)
4)
5)
6)
7)
8)
9)
замечаем, что у нас в коде
Q никак не меняется и
равно 9
Возьмем, что L=0, x=32,
цикл работать будет пока
X>=Q
L=0+1+1+1=3
Q=32-9-9-9=5
Получается, что L это
количество 9 в числе х, а Х
– остаток после
выполнения программы
А нас интересует L=4,M=5
Но стоит заметить еще
одно условие, где if, если
М>L, то тогда они
меняются местами
Получаем 4*9+5=41 и
5*9+4=49
Выбираем наибольшее
получаем 49

15.

Разновидности задач
Посимвольная обработка восьмеричных чисел
Посимвольная обработка чисел в разных системах
счисления
Посимвольная обработка десятичных чисел

16.

Ниже на пяти языках записан
алгоритм. Получив на вход число
x, этот алгоритм печатает два
числа: a и b. Укажите наименьшее
из таких чисел x, при вводе
которого
алгоритм
печатает
сначала 3, а потом 2.
Бейсик
DIM X, A, B AS INTEGER
INPUT X
A=0: B=0
WHILE X > 0
A = A+1
IF B < (X MOD 8) THEN
B = X MOD 8
END IF
X=X\8
WEND
PRINT A
PRINT B
Паскаль
var x, a, b: integer;
begin
readln(x);
a:=0; b:=0;
while x>0 do
begin
a:=a + 1;
if b < (x mod 8)
then
b:=x mod 8;
x:=x div 8;
end;
writeln(a); write(b);
end.
Си++
Алгоритмический
#include <iostream>
алг
using namespace std;
нач
int main()
цел x, a, b
{
ввод x
int x, a, b;
a:=0; b:=0
cin >> x;
нц пока x>0
a=0; b=0;
a:=a+1
while (x>0){
если b < mod(x,8)
a = a+1;
то
if (b < (x%8)){
b:=mod(x,8)
b = x%8;
все
}
x:=div(x,8)
x = x/8;
кц
}
вывод a, нс, b
cout << a << endl << b << endl;
кон
}
Python
x = int(input())
a=0
b=0
while x > 0:
a += 1
if (b < (x % 8)):
b =x % 8
x //= 8
print(a)
print(b)

17.

Ниже на пяти языках
программирования записан
алгоритм. Получив на вход
число x, этот алгоритм
печатает числа: a и b.
Укажите наибольшее
четырехзначное число x, при
вводе которого алгоритм
печатает сначала 5, а потом
7.
Бейсик
DIM X, Y, A, B AS INTEGER
A = 10
B=0
INPUT X
WHILE X > 0
Y = X MOD 10
X = X \ 10
IF Y < A THEN A = Y
IF Y > B THEN B = Y
WEND
PRINT A
PRINT B
Паскаль
var x, y, a, b: integer;
begin
a := 10;
b := 0;
readln(x);
while x > 0 do
begin
y := x mod 10;
x := x div 10;
if y < a then
a := y;
if y > b then
b := y;
end;
writeln(a);
writeln(b)
end.
#include <iostream>
using namespace std;
int main()
{
int x, y, a, b;
a = 10;
b = 0;
cin >> x;
while (x > 0)
{
y = x % 10;
x = x / 10;
if (y < a)
a = y;
if (y > b)
b = y;
}
cout << a << endl << b << endl;
}
Python
a = 10
b=0
x = int(input())
while x > 0:
y = x % 10
x = x // 10
if y < a:
a =y
if y > b:
b =y
print(a)
print(b)
Алгоритмический язык
алг
нач
цел x, y, a, b
a := 10
b := 0
ввод x
нц пока x > 0
y := mod(x, 10)
x := div(x, 10)
если y < a
то a := y
все
если y > b
то b := y
все
кц
вывод a, нс, b
кон
Си++

18.

Ниже на пяти языках
программирования записан
алгоритм. Получив на вход число
x, этот алгоритм печатает числа: a
и b.
Укажите наименьшее
положительное пятизначное
число x, при котором после
выполнения алгоритма будет
напечатано сначала 4, а потом 2.
Бейсик
DIM X, Y, A, B AS INTEGER
A=0
B=0
INPUT X
WHILE X > 0
Y = X MOD 10
IF Y > 3 THEN A = A + 1
IF Y < 8 THEN B = B + 1
X = X \ 10
WEND
PRINT A
PRINT B
Python
a=0
b=0
x = int(input())
while x > 0:
y = x % 10
if y > 3:
a = a+1
if y < 8:
b = b+1
x = x // 10
print(a)
print(b)
Алгоритмический язык
алг
нач
цел x, y, a, b
a := 0
b := 0
ввод x
нц пока x > 0
y := mod(x, 10)
если y > 3
то a := a + 1
все
если y < 8
то b := b + 1
все
x := div(x, 10)
кц
вывод a, нс, b
кон
Паскаль
var x, y, a, b: integer;
begin
a := 0;
b := 0;
readln(x);
while x > 0 do
begin
y := x mod 10;
if y > 3 then
a := a + 1;
if y < 8 then
b := b + 1;
x := x div 10
end;
writeln(a);
writeln(b)
end.
Си++
#include <iostream>
using namespace std;
int main()
{
int x, y, a, b;
a = 0;
b = 0;
cin >> x;
while (x > 0)
{
y = x % 10;
if (y > 3)
a = a + 1;
if (y < 8)
b = b + 1;
x = x / 10;
}
cout << a << endl << b << endl;
}

19.

Ниже
на
пяти
языках
программирования
записан
алгоритм.
Получив
на
вход
натуральное десятичное число x,
этот алгоритм печатает два числа:
L
и
M.
Укажите наибольшее число x,
при вводе которого алгоритм
печатает сначала 14, а потом 3.
Бейсик
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
ENDIF
X=X\8
WEND
PRINT L
PRINT 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); write(M);
end.
#include <iostream>
using namespace std;
int main(void) {
int L, M, x;
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 << “ “ << M;
}
Python
x = 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
кон
Си++
English     Русский Правила