Задание 5 ЕГЭ по информатике — Линейный алгоритм: достройка двоичной записи
Разбор номера «Линейный алгоритм: достройка двоичной записи»: как устроено задание, настоящие формулировки из тренажёра с подсказками и официальным решением. Окно практики открывается сразу — без регистрации и онбординга.
Задание 5 (№5 — Линейный алгоритм: достройка двоичной записи) — вопрос первой части экзамена по информатике: короткий ответ, который проверяется автоматически. Ниже — реальные формулировки из тренажёра с подсказками и разбором; проверка работает прямо на этой странице.
Окно примера ниже — то же, что на сайте: подсказки по одной, автопроверка ответа и разбор.
Примеры задания 5
№ 5Пример 1краткий ответ★★★★★1 первичный балл
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1. Строится двоичная запись числа N. 2. К этой записи дописываются справа ещё два разряда по следующему правилу: складываются все цифры двоичной записи: а) если сумма нечетная, к числу дописывается 11, б) если сумма четная, дописывается 00. Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите такое наименьшее число R, которое превышает 114 и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе счисления.
Подсказка 1. Разбери алгоритм по шагам: в какой системе запись, куда дописываются разряды и по какому признаку (чётность, остаток).
Подсказка 2. Иди от результата к началу: отбрось дописанные разряды и переведи оставшуюся запись в десятичную систему, где значения обычно и спрашивают.
Подсказка 3. Перебор чисел с проверкой условия часто быстрее ручного счёта; типичная ошибка — перепутать основание системы или сторону дописывания.
Разбор.
Решение. Переведем число 11410 в двоичную систему: 11410 = 111 00102. Отсюда узнаем число на входе — 111002. Следуя алгоритму, нужно проверить четность единиц. Количество единиц нечетно, следовательно, нужно добавить две единицы. Получаем число 115, оно и является ответом, так как оно больше 114 и наименьшее из возможных. Ответ: 115. Приведём другое решение на языке Python. for n in range(1, 100): summa = 0 s = bin(n)[2:] # перевод в двоичную систему s = str(s) for i in range(len(s)): summa += int(s[i]) if summa % 2 != 0: s += "11" else: s += "00" r = int(s, 2) # перевод в десятичную систему if r > 114: print(r) break Приведём другое решение на языке Python. for n in range(1,1000): r = bin(n)[2:] r += "11" if (r.count("1") % 2 == 1) else "00" if (int(r,2)) > 114: print(int(r,2)) break Приведём решение Сергея Донец на языке PascalABC.NET. uses School; begin for var i:=1 to 114 do begin var b:=bin(i); var n:=b.CountOf('1'); if n.IsEven then b+='00' else b+='11'; var r:=Dec(b,2); if r>114 then begin Println(r);halt;end; end; end.
Ответ.
115
№ 5Пример 2краткий ответ★★★★★1 первичный балл
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1. Строится троичная запись числа N. 2. Далее эта запись обрабатывается по следующему правилу: а) если число N делится на 3, то слева к нему приписывается «1», а справа «02»; б) если число N на 3 не делится, то остаток от деления на 3 умножается на 4, переводится в троичную запись и дописывается в конец числа. Полученная таким образом запись является троичной записью искомого числа R. 3. Результат переводится в десятичную систему и выводится на экран. Например, для исходного числа 1110 = 1023 результатом является число 102223 = 10710, а для исходного числа 1210 = 1103 — это число 1110023 = 35310. Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, не превышающее 350.
Подсказка 1. Разбери алгоритм по шагам: в какой системе запись, куда дописываются разряды и по какому признаку (чётность, остаток).
Подсказка 2. Иди от результата к началу: отбрось дописанные разряды и переведи оставшуюся запись в десятичную систему, где значения обычно и спрашивают.
Подсказка 3. Перебор чисел с проверкой условия часто быстрее ручного счёта; типичная ошибка — перепутать основание системы или сторону дописывания.
Разбор.
Решение. Приведём решение на языке Python. def f(n): s='' while n > 0: s = str(n%3) + s n //= 3 return s c = [] for n in range(1000): s = f(n) if n%3 == 0: s = '1' + s + '02' else: s = s + f(n%3*4) r = int(s,3) if r Ответ: 38. Приведём решение Сергея Донец на PascalABC: uses School; begin var sp:=new List; for var n:=1 to 1111 do begin var t:=tobase(n,3); var ost:=n mod 3; if ost=0 then t:='1'+t+'02' else t:=t+tobase(ost*4,3); var r:=dec(t,3); if r
Ответ.
38
Как устроена практика в тренажёре
Опыт за каждое решение
Чистое решение без подсказок ценится выше: опыт, уровни и серии растут с каждым заданием, а не за клики.
Ошибки не пропадают
Нерешённое возвращается в работу над ошибками — тренажёр приведёт к заданию снова, пока оно не закроется без помощи.
Прогноз балла
После нескольких решённых номеров тренажёр показывает прогнозный балл и говорит, какие темы подтянуть, чтобы его поднять.
Закрепи задание 5 в тренажёре
Окно практики откроется сразу — без имени и онбординга. Прогресс сохранится, как только укажешь имя.