ЗАДАЧИ ЕГЭ С ЦИКЛАМИ (11 КЛАСС)

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

Задача 1. Получив на вход число x, этот алгоритм печатает два числа: a и b. Укажите наименьшее из таких чисел x, при вводе которого алгоритм печатает сначала 3, а потом 2.

алг
нач
цел x, a, b
ввод x
a:=0; b:=0
нц пока x>0    
 a:=a+1     
если b < mod(x,8)        
то           
 b:=mod(x,8)     
все     
x:=div(x,8)
кц
вывод a, нс, b
кон


Решение:

Значение в переменной a после выполнения цикла равно количеству выполненных циклов. Поскольку требуется, чтобы программа напечатала сначала число 3, цикл должен выполниться три раза. Оператор div оставляет только целую часть от деления, следовательно, искомое число должно два раза делиться на 8 так, чтобы целая часть результата была положительной. Следовательно, это число должно быть не меньше числа 64.

В переменную b записывается остаток от деления числа на 8. По условию требуется, чтобы после выполнения цикла переменная b имела значение 2, т. е. максимальный остаток от деления на 8 в цикле должен быть равен 2.

Выполним программу для всех чисел, не меньших чем 64. Первое число, которое удовлетворит условию и будет наименьшим. Поскольку программа выводит целые числа и никаких других операторов к числу, кроме операторов div и mod, не применяется, будем рассматривать только целые числа.

При вводе числа 64 программа выведет числа 3 и 1. При вводе числа 65 программа выведет числа 3 и 1. При вводе числа 66 программа выведет числа 3 и 2. Следовательно, ответ 66.

Ответ: 66.



Задача 2. Получив на вход число x, этот алгоритм печатает два числа: L и M. Укажите наименьшее число x, при вводе которого алгоритм печатает сначала 3, а потом 6.

алг
нач    
цел 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
кон


Решение:

Можно заметить, что число М = целая_часть(log2x) + 1, а L - количество единиц в двоичной записи числа х.

Найдем минимальное число, удовлетворяющее этим условиям.

Это 1000112 = 35.

Ответ: 35.



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

алг
нач
цел N, q, i
ввод N
нц для i от 1 до N - 1    
если mod(N, i) = 0       
  то q : = i все
кц
вывод q
кон


Решение:

Фрагмент кода находит наибольший делитель N,не равный самому числу N.

Для наименьшего N делитель равен 2, следовательно, N= 2 · 17 = 34.

Ответ: 34.



Задача 4. Получив на вход число x, этот алгоритм печатает числа: a и b. Укажите наибольшее четырехзначное число x, при вводе которого алгоритм печатает сначала 5, а потом 7.

алг
нач
цел 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
кон


Решение:

Рассмотрим цикл, число шагов которого зависит от изменения переменной x.

Т. к. оператор div возвращает целую часть от деления, то при делении на 10 это равносильно отсечению последней цифры. Следовательно, цикл выполнится четыре раза.

В переменную a записывается остаток от деления числа x на 10 при условии, что этот остаток меньше числа уже записанного в переменной a. В переменную b записывается остаток от деления числа x на 10 при условии, что этот остаток больше числа уже записанного в переменной b. Таким образом, в переменную a записывается наименьшая цифра числа x, а в переменную b — наибольшая. Значит, наибольшее число, удовлетворяющее условию задачи — 7775.

Ответ: 7775.