Информатика ЕГЭ 5 задание разбор
5-е задание: «Анализ алгоритмов и исполнители» Уровень сложности — базовый, Требуется использование специализированного программного обеспечения — нет, Максимальный балл — 1, Примерное время выполнения — 4 минуты.
Проверяемые элементы содержания: Формальное исполнение алгоритма, записанного на естественном языке, или умение создавать линейный алгоритм для формального исполнителя с ограниченным набором команд
Плейлист видеоразборов задания на YouTube:
Решение задания про алгоритм, который строит число RНа вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число R следующим образом:
- Строится двоичная запись числа 4N.
- К этой записи дописываются справа еще два разряда по следующему правилу:
- складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 10000 преобразуется в запись 100001;
- над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на 2.
Полученная таким образом запись является двоичной записью искомого числа R.
Ответ: 8
-
✎ Решение аналитическим способом:
✎ Решение с использованием программирования:
uses school; begin var n_ := 1; while True do begin var n := 4*n_; var ost := bin(n).CountOf('1') mod 2; // остаток при делении на 2 n := 2 * n + ost; //в двоичной с.с. добавляем разряд (*2) и остаток к этому разряру (+ost) ost := bin(n).CountOf('1') mod 2; // остаток при делении на 2 n := 2 * n + ost; if n > 129 then begin println(n_); break end; n_ += 1; end; end.
n_ = 1 while True: n = 4*n_ r = str(bin(n)) r = r[2:] for i in range(2): if r.count('1') % 2 == 0: r+='0' else: r+='1' n = int(r, base=2) if n > 129: print(n_) break n_+=1
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Строится двоичная запись числа N.
- К этой записи дописываются справа ещё два разряда по следующему правилу:
- складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
- над этой записью производятся те же действия – справа дописывается остаток от деления суммы её цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите минимальное число R, которое превышает число 83 и может являться результатом работы данного алгоритма. В ответе это число запишите в десятичной системе счисления.
Ответ: 86
- Заметим, что после второго пункта условия задачи получаются только четные числа (т.к. если число в двоичной системе заканчивается на 0, то оно четное). Таким образом, нас будут интересовать только четные числа.
- Наименьшим возможным числом, превышающим 83, является число 84. С ним и будем работать.
- Переведем 84 в двоичную систему счисления. На компьютерном ЕГЭ это можно сделать с помощью программистского режима калькулятора. Либо в консоли интерпретатора Python набрать bin(84) . Получим:
- В данном числе выделенная часть — это N. Значит, необходимое нам двоичное число — это 10101. После первого пункта задачи к данному числу должна была добавиться справа единица, так как оно нечетное. А мы имеем 0. Соответственно, это оно не подходит.
- Возьмем следующее четное число — 86. Переведем его в двоичную систему счисления:
- В данном числе выделенная часть — это N. Значит, необходимое нам двоичное число — это 10101. После первого пункта задачи к данному числу должна была добавиться справа единица, так и есть: 101011. А затем добавляется 0: 1010110. Соответственно, оно подходит.
Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом: 1. Строится двоичная запись числа N . 2. Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется её последняя цифра. В противном случае в конец записи добавляется цифра, которая встречается реже. 3. Шаг 2 повторяется ещё два раза. 4. Результат переводится в десятичную систему счисления.
При каком наименьшем исходном числе N > 65 в результате работы алгоритма получится число, кратное 4?
Ответ: 79
-
✎ Решение с использованием программирования:
uses school; begin var n_ := 1; while True do begin var n := n_; for var i := 1 to 3 do begin if bin(n).CountOf('1') = bin(n).CountOf('0') then // сравниваем if n mod 2 = 0 then // если четное, то в конце 0 n := 2 * n // добавляем разряд = 0 else n := 2 * n + 1 // иначе добавляем разряд = 1 else if bin(n).CountOf('1') > bin(n).CountOf('0') then n := 2 * n else n := 2 * n + 1 end; if (n_ > 65) and (n mod 4 = 0) then begin println(n_); break end; n_ += 1; end; end.
n_ = 1 while True: n = n_ r = str(bin(n)) r = r[2:] for i in range(3): if r.count('1') == r.count('0'): r+=r[-1] elif r.count('1')>r.count('0'): r+='0' else: r+='1' n = int(r, base=2) if n_ > 65 and n % 4 == 0 : print(n_,n) break n_+=1
На вход алгоритма подаётся натуральное число N . Алгоритм строит по нему новое число R следующим образом. 1) Число N переводим в двоичную запись. 2) Инвертируем все биты числа кроме первого. 3) Переводим в десятичную запись. 4) Складываем результат с исходным числом N . Полученное число является искомым числом R .
Укажите наименьшее нечетное число N , для которого результат работы данного алгоритма больше 99. В ответе это число запишите в десятичной системе счисления.
Ответ: 65
-
✎ Решение с использованием программирования:
n_ = 1 while True: n = n_ r = str(bin(n)) r = r[2:] for i in range(1,len(r)): if r[i]== '0': r=r[:i]+'1'+r[i+1:] else: r=r[:i]+'0'+r[i+1:] n = int(r, base=2) n+=n_ if n > 99 and n_ % 2 != 0 : print(n_,n) break n_+=1
На вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N. 2. К этой записи дописываются справа еще два разряда по следующему правилу: — если N делится нацело на 4, в конец числа (справа) дописывается сначала ноль, а затем еще один ноль; — если N при делении на 4 дает в остатке 1, то в конец числа (справа) дописывается сначала ноль, а затем единица; — если N при делении на 4 дает в остатке 2, то в конец числа (справа) дописывается сначала один, а затем ноль; — если N при делении на 4 дает в остатке 3, в конец числа (справа) дописывается сначала один, а затем еще одна единица.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью числа R — результата работы данного алгоритма.
Укажите максимальное число R, которое меньше 100 и может являться результатом работы данного алгоритма. В ответе это число запишите в десятичной системе счисления.
Ответ: 96
- Поскольку требуется найти наибольшее число, то возьмем наибольшее из возможных чисел, которые bin(99) . Получим:
- По алгоритму это число получилось путем добавления справа двух разрядов, значение которых зависит от исходного N:
- Т.е. в конце были добавлены две единицы — по алгоритму это значит, что исходное N должно в остатке при делении на 4 давать 3. Переведем найденное N в десятичную систему. Можно использовать калькулятор либо консоль пайтон: int('11000',2)
- 24 делится на 4 нацело, т.е. в конце по алгоритму должны были добавиться два разряда — 00. У нас же в конце 11. Т.е. число 99 не подходит. Проверим следующее — 98.
Результат: 96
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N. 2. К этой записи дописывается (дублируется) последняя цифра. 3. Затем справа дописывается бит чётности: 0, если в двоичном коде полученного числа чётное число единиц, и 1, если нечётное. 4. К полученному результату дописывается ещё один бит чётности.
Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите минимальное число R, большее 114, которое может быть получено в результате работы этого алгоритма. В ответе это число запишите в десятичной системе.
Ответ: 126
-
✎ Решение аналитическим способом:
2. В полученное числе N = 1110 дублируется последняя цифра и получается 11100. 3. Поскольку число единиц (3) — нечетное, то справа добавляется 1: 111001. 4. Т.к. в полученном наборе цифр четное число единиц, то добавляем 0: 1110010
✎ Решение с использованием программирования:
uses school; begin var n_ := 1; while True do begin var n := n_; // дублирвание последней цифры if n mod 2 = 0 then // если четное, то в конце 0 n := 2 * n // добавляем разряд = 0 else n := 2 * n + 1; // иначе добавляем разряд = 1 for var i := 1 to 2 do begin if bin(n).CountOf('1') mod 2 = 0 then n := 2 * n // добавляем разряд = 0 else n := 2 * n + 1 // иначе добавляем разряд = 1 end; if n > 114 then begin println(n); break end; n_ += 1; end; end.
n_ = 1 while True: n = n_ r = str(bin(n)) # строковое значение r = r[2:] # убираем 0b r=r+r[-1] for i in range (2): if r.count('1') % 2 == 0: r = r+'0' else: r = r+'1' r = int(r,base = 2) # в 10-ю с.с. if r > 114: print(r) break n_+= 1
Результат: 126
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью числа – результата работы данного алгоритма.
Укажите минимальное число N, для которого результат работы алгоритма будет больше 134. В ответе это число запишите в десятичной системе счисления.
Ответ: 33
Автомат обрабатывает целое число N (0 ≤ N ≤ 255) по следующему алгоритму:
1. Строится восьмибитная двоичная запись числа N. 2. Все цифры двоичной записи заменяются на противоположные (0 на 1, 1 на 0). 3. Полученное число переводится в десятичную запись. 4. Из нового числа вычитается исходное, полученная разность выводится на экран.
Какое число нужно ввести в автомат, чтобы в результате получилось 45?
Ответ: 105
- Результатом выполнения алгоритма является число 45. Алгоритм работает в двоичной системе счисления, поэтому переведем число:
- Пронумеруем биты слева направо, начиная с единицы. Рассмотрим каждый бит отдельно, начиная с левого бита под номером 1.
- 1. Так как биты в уменьшаемом и вычитаемом должны быть различны, то единица в результате может получится только 1 - 0 , с учетом, что у разряда с единицей заняли. То есть бит:
- 2. 1 - 0 не может в результате дать 0, так как у следующей слева единицы мы заняли. Значит, 0 - 1 . Чтобы не получить единицу в ответе, необходимо у нуля тоже занять:
- 3. 1 - 0 не может быть, так как у следующего слева нуля мы заняли. Значит 0 - 1 . То есть как раз чтобы получить единицу ( 10 - 1 = 1 ), занимаем у следующих слева разрядов:
- 4. 0 - 1 не может быть. Значит, чтобы получить в результате ноль, берем 1 - 0 , у единицы должно быть занято.
- 5. 1 - 0 не может быть. Так как слева у единицы занято. Значит, чтобы получить в результате 1, берем 0 - 1 :
- 6. 0 - 1 не даст в ответе единицу, значит, имеем 1 - 0 :
- 7. 0 - 1 не может быть, значит, 1 - 0 . Чтобы получить в результате 0, необходимо, чтобы у 1 было занято:
- 8. Чтобы получить 1, имеем 0 - 1 :
- Полученное число (вычитаемое) и есть искомое N. Переведем его в 10-ю с.с.:
Автомат получает на вход четырёхзначное число. По этому числу строится новое число по следующим правилам.
- Складываются первая и вторая, а также третья и четвёртая цифры исходного числа.
- Полученные два числа записываются друг за другом в порядке убывания (без разделителей).
Пример. Исходное число: 3165. Суммы: 3 + 1 = 4; 6 + 5 = 11. Результат: 114.
Укажите наименьшее число, в результате обработки которого, автомат выдаст число 1311.
Ответ: 2949
Автомат получает на вход четырехзначное число. По нему строится новое число по следующим правилам:
- Складываются первая и вторая, затем вторая и третья, а далее третья и четвёртая цифры исходного числа.
- Полученные три числа записываются друг за другом в порядке возрастания (без разделителей).
Пример: Исходное число: 7531. Суммы: 7+5=12; 5+3=8; 3+1=4. Результат: 4812.
Укажите наибольшее число в результате обработки которого автомат выдаст число 2512.
Ответ: 9320
Результат: 9320
Автомат получает на вход два двузначных шестнадцатеричных числа. В этих числах все цифры не превосходят цифру 6 (если в числе есть цифра больше 6, автомат отказывается работать). По этим числам строится новое шестнадцатеричное число по следующим правилам:
- Вычисляются два шестнадцатеричных числа — сумма старших разрядов полученных чисел и сумма младших разрядов этих чисел.
- Полученные два шестнадцатеричных числа записываются друг за другом в порядке убывания (без разделителей).
Пример: Исходные числа: 25, 66. Поразрядные суммы: 8, B. Результат: B8.
Какие из предложенных чисел могут быть результатом работы автомата? Перечислите в алфавитном порядке буквы, соответствующие этим числам, без пробелов и знаков препинания.
Варианты: A) 127 B) C6 C) BA D) E3 E) D1
Ответ: BC
Проанализируем все варианты:
Ответ: BC
Автомат получает на вход два двузначных шестнадцатеричных числа. В этих числах все цифры не превосходят цифру 7 (если в числе есть цифра больше 7, автомат отказывается работать). По этим числам строится новое шестнадцатеричное число по следующим правилам.
1. Вычисляются два шестнадцатеричных числа: сумма старших разрядов полученных чисел и сумма младших разрядов этих чисел. 2. Полученные два шестнадцатеричных числа записываются друг за другом в порядке возрастания (без разделителей).
Пример. Исходные числа: 66, 43. Поразрядные суммы: A, 9. Результат: 9A.
Определите, какое из предложенных чисел может быть результатом работы автомата.
Варианты: 1) AD 2) 64 3) CF 4) 811
Ответ: 1
Результат: 1
Автомат получает на вход натуральное число X. По этому числу строится трёхзначное число Y по следующим правилам: 1. Первая цифра числа Y (разряд сотен) – остаток от деления X на 7. 2. Вторая цифра числа Y (разряд десятков) – остаток от деления X на 2. 3. Третья цифра числа Y (разряд единиц) – остаток от деления X на 5.
Сколько существует двузначных чисел, при обработке которого автомат выдаёт результат 312?
Ответ: 2
- Обозначим каждую цифру числа Y согласно заданию:
- Сделаем выводы:
1. x mod 2 = 1 => значит, X — нечетное число 2. x mod 5 = 2 => значит, X — либо ?2, либо ?7. 3. раз x — нечетное, то из пред. пункта получаем x = ?7 4. x mod 7 = 3 => переберем все варианты: