ЕГЭ – 2021, задание 5, часть 2. Элементы теории алгоритмов: бит четности и др.
При решении заданий 5 ЕГЭ-2021, часть 2 рассматриваются несколько типов задач на алгоритмизацию. При этом нужно учесть,, что алгоритм — это четкий порядок действий, подлежащих выполнению, то есть при решении задач на алгоритмизацию следует внимательно читать условие задачи и точно, аккуратно и без спешки (в этом залог быстрого и точного решения задачи!) выполнять описанные в нем действия.
При этом обратим внимание, что одни и те же действия в разных задачах могут описываться разными условиями, например:
— «складываются все цифры двоичной записи числа» или «считается количество единиц в двоичной записи числа»: поскольку сумма цифр двоичной записи числа равна количеству единиц в двоичном числе, то при решении задач быстрее и проще посчитать количество единиц в записи и получить результат для данного условия;
— «остаток от деления суммы (количества единиц) на два», «бит чётности», «четное число или нет» — в результате проверки всех этих условий проверяется остаток от деления числа на 2: по умолчанию это ноль для четного числа и единица — для нечетного. Но в условии задач этот результат может меняться, поэтому следует точно выполнять действия, заданные в алгоритме!
Следует также внимательно смотреть, какое из чисел – N или R – следует искать в данной задаче.
Пример 1 (ДЕМО – 2021)
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
-
Строится двоичная запись числа N.
-
К этой записи дописываются справа ещё два разряда по следующему правилу:
-
складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
-
над этой записью производятся те же действия – справа дописывается остаток от деления суммы её цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите такое наименьшее число N, для которого результат работы данного алгоритма больше числа 77. В ответе это число запишите в десятичной системе счисления.
Решение:
Так как в задании указан результат работы алгоритма, то выполняем действия строго по алгоритму, но в обратную сторону:
-
Переведем в двоичную систему первое число, удовлетворяющее условию задачи (наименьшее число R, которое больше числа 77) — число 78:
78 = 26 + 23 + 22 + 21 = 10011102
-
Для проверки, может ли данное число R быть результатом работы алгоритма, отделяем от него справа две последние цифры (которые являются результатом выполнения алгоритма) и проверяем исходное число до работы алгоритма
N = 100112 и цифры 10, которые получены в результате двух следующих шагов выполнения алгоритма:
-
1 – верно, так как количество единиц в числе N равно трем;
-
0 – верно, так как теперь в полученном результате уже 4 единицы.
Так как условия выполнения алгоритма совпадают с полученным результатом, то искомое число N = 100112 и будет искомым. Переводим его в десятичную систему счисления и получаем ответ:
N = 100112 = 20 + 21 + 02 + 03 + 24 = 1 + 2 + 16 = 19.
Примечание: для быстрого и точного перевода числа из двоичной системы в десятичную я записываю степени с конца, чтобы не делать лишних действий и не допускать возможных ошибок.
Ответ: 19
Пример 2 (1426)
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
-
Строится двоичная запись числа N.
-
К этой записи дописываются справа ещё два разряда по следующему правилу:
-
в конец числа (справа) дописывается 1, если число единиц в двоичной записи числа чётно, и 0, если число единиц в двоичной записи числа нечётно;
-
к этой записи справа дописывается остаток от деления количества единиц на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите минимальное число R, которое превышает 31 и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе.
Решение:
Так как в задании указан результат работы алгоритма, то выполняем действия строго по алгоритму, но в обратную сторону:
-
Переведем в двоичную систему первое число, удовлетворяющее условию задачи (наименьшее число R, которое больше числа 31) — число 32:
32 = 25 = 1000002
-
Для проверки, может ли данное число R быть результатом работы алгоритма, отделяем от него справа две последние цифры (которые являются результатом выполнения алгоритма) и проверяем исходное число до работы алгоритма N = 10002 и цифры 00, которые получены в результате двух следующих шагов выполнения алгоритма:
-
0 – верно, так как количество единиц в числе N нечетно;
-
0 – неверно, так как остаток от деления количества единиц на 2 равен 1.
Так как условия выполнения алгоритма НЕ совпадают с полученным результатом, то берем следующее возможное число искомое число R = 33 и проверяем его.
1. Переведем число 33 в двоичную систему счисления: 33 = 25 = 1000012
2. Для проверки, может ли данное число R быть результатом работы алгоритма,
отделяем от него справа две последние цифры (которые являются результатом
выполнения алгоритма) и проверяем исходное число до работы алгоритма N = 10002
и цифры 01, которые получены в результате двух следующих шагов выполнения
алгоритма:
-
0 – верно, так как количество единиц в числе N нечетно;
-
1 – верно, так как результат от деления количества единиц на 2 равен 1.
Так как условия выполнения алгоритма совпадают с полученным результатом, то искомое число N = 110002 и будет искомым. Переводим его в десятичную систему счисления и получаем ответ:
N = 1100112 = 20 + 21 + 02 + 03 + 24 = 1 + 2 + 16 = 19.
Ответ: 33
Пример 3 (1431)
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
-
Строится двоичная запись числа N.
-
К этой записи дописывается справа бит чётности: 0, если в двоичном коде числа N было чётное число единиц, и 1, если нечётное.
-
К полученному результату дописывается ещё один бит чётности.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число, большее, чем 96. В ответе это число запишите в десятичной системе.
Решение 1 – короткое:
Так как в задании указан результат работы алгоритма, то выполняем действия строго по алгоритму, но в обратную сторону:
Переведем в двоичную систему первое число, удовлетворяющее условию задачи (наименьшее число R, которое больше числа 96) — число 97:
97 = 26 + 25 + 20 = 11000012
Для проверки, может ли данное число R быть результатом работы алгоритма, отделяем от него справа две последние цифры (которые являются результатом выполнения алгоритма) и получаем, что для числа N = 110002 последними цифрами должны быть 00, но тогда число R = 11000002 = 96 не удовлетворяет условию задачи.
Числа с двумя последними цифрами 01 (97 = 11000012), 10 (98 = 11000102) и 11 (99=11000112) также не подходят. Это значит, что нужно увеличивать само число N, тогда получаем N = 110012 и в результате работы алгоритма получим R = 11001102 = 102.
Тогда искомое число N = 110012 = 25
Ответ: 25
Решение 2 – длинное (обычное):
Так как в задании указан результат работы алгоритма, то выполняем действия строго по алгоритму, но в обратную сторону:
-
Переведем в двоичную систему первое число, удовлетворяющее условию задачи (наименьшее число R, которое больше числа 96) — число 97:
97 = 26 + 25 + 20 = 11000012
Для проверки, может ли данное число R быть результатом работы алгоритма, отделяем от него справа две последние цифры (которые являются результатом выполнения алгоритма) и проверяем исходное число до работы алгоритма N = 110002 и цифры 01, которые получены в результате двух следующих шагов выполнения алгоритма:
-
0 – верно, так как количество единиц в числе N четно;
-
1 –неверно, так как количество единиц в числе N четно.
Так как условия выполнения алгоритма НЕ совпадают с полученным результатом, то берем следующее возможное число R = 98 и проверяем его.
-
Переведем в двоичную систему число 98:
98 = 26 + 25 + 21 = 11000102
Для проверки, может ли данное число R быть результатом работы алгоритма, отделяем от него справа две последние цифры (которые являются результатом выполнения алгоритма) и проверяем исходное число до работы алгоритма N = 110002 и цифры 10, которые получены в результате двух следующих шагов выполнения алгоритма:
-
1 – неверно, так как количество единиц в числе N четно;
-
0 – неверно, так как количество единиц в числе N нечетно.
Так как условия выполнения алгоритма опять НЕ совпадают с полученным результатом, то берем следующее возможное число R = 99 и проверяем его.
-
Переведем в двоичную систему число 99:
-
= 26 + 25 + 21 + 20 = 11000112
Для проверки, может ли данное число R быть результатом работы алгоритма, отделяем от него справа две последние цифры (которые являются результатом выполнения алгоритма) и проверяем исходное число до работы алгоритма N = 110002 и цифры 11, которые получены в результате двух следующих шагов выполнения алгоритма:
-
1 – неверно, так как количество единиц в числе N четно
-
1–верно, так как количество единиц в числе N нечетно.
Так как условия выполнения алгоритма опять НЕ совпадают с полученным результатом, то берем следующее возможное число R = 100 и проверяем его.
-
Переведем в двоичную систему число100:
-
= 26 + 25 + 22 = 11001002
Для проверки, может ли данное число R быть результатом работы алгоритма, отделяем от него справа две последние цифры (которые являются результатом выполнения алгоритма) и проверяем исходное число до работы алгоритма N = 110012 и цифры 00, которые получены в результате двух следующих шагов выполнения алгоритма:
-
0 – неверно, так как количество единиц в числе N нечетно
-
0 – неверно, так как количество единиц в числе N нечетно.
Так как условия выполнения алгоритма опять НЕ совпадают с полученным результатом, то берем следующее возможное число R = 101 и проверяем его.
-
Переведем в двоичную систему число 101:
-
= 26 + 25 + 22 + 20 = 11001012
Для проверки, может ли данное число R быть результатом работы алгоритма, отделяем от него справа две последние цифры (которые являются результатом выполнения алгоритма) и проверяем исходное число до работы алгоритма N = 110012 и цифры 01, которые получены в результате двух следующих шагов выполнения алгоритма:
-
0 – неверно, так как количество единиц в числе N нечетно
-
1 – верно, так как количество единиц в числе N нечетно.
Так как условия выполнения алгоритма опять НЕ совпадают с полученным результатом, то берем следующее возможное число R = 102 и проверяем его.
-
Переведем в двоичную систему число 102:
-
= 26 + 25 + 22 + 21 = 11001102
Для проверки, может ли данное число R быть результатом работы алгоритма, отделяем от него справа две последние цифры (которые являются результатом выполнения алгоритма) и проверяем исходное число до работы алгоритма N = 110012 и цифры 10, которые получены в результате двух следующих шагов выполнения алгоритма:
-
1 – верно, так как количество единиц в числе N нечетно
-
0 – верно, так как количество единиц в числе N четно.
Так как оба условия выполнения алгоритма совпадают с полученным результатом, то искомое число N = 100112 и будет искомым. Переводим его в десятичную систему счисления и получаем ответ:
N = 110012 = 20 + 01 + 02 + 23 + 24 = 1 + 8 + 16 = 25.
Ответ: 25
Пример 4 (4796)
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа N.
2) Складываются все цифры двоичной записи числа. Если сумма четная, то в конец числа (справа) дописывается 1, а если нечетная, то дописывается 0. Например, запись числа 10 преобразуется в запись 100;
3) К полученному результату применяется еще раз пункт 2 этого алгоритма.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите количество чисел R, которые могут быть получены в результате работы этого алгоритма, и лежат в диапазоне 16 ≤ R ≤ 32.
Решение:
Так как в задании указан результат работы алгоритма, то выполняем действия строго по алгоритму, но в обратную сторону.
Переведем в двоичную систему первое число, удовлетворяющее условию задачи границы диапазона возможных чисел R:
Rmin = 24 = 100002
Rmax = 25 = 1000002
Соответственно получаем Nmin = 22 = 1002 и Nmax = 23 = 10002.
Далее берем все возможные числа N внутри данного диапазона (возможны только три варианта – 101, 110 и 111) и проверяем результат работы алгоритма над ними:
при N = 1012 возможно только одно R = 101102 = 22
при N = 1102 возможно только одно R = 110102 = 26
при N = 1112 возможно только одно R = 111002 = 28
Тогда всего получаем 5 подходящих чисел.
Ответ: 5
Пример 5 (4846).
Автомат обрабатывает натуральное число N
1) Строится восьмибитная двоичная запись числа N–1.
2) Инвертируются разряды исходного числа (0 заменяется на 1, 1 на 0).
3) Полученное число переводится в десятичную систему счисления.
Для какого числа N результат работы алгоритма равен 113?
Решение:
Переводим число 113 в двоичную систему счисления и получаем
N — 1 = 26 + 25 + 24 + 20 = 11100012
Дополняем его до восьми бит и инвертируем:
N — 1 = 011100012 = 100011102 = 21 + 22 + 23+ 27 = 142, тогда N = 142 + 1= 143.
Ответ: 143
Тема 5.
Простейшие исполнители и алгоритмы
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами — ЛЕГКО!
Подтемы раздела
простейшие исполнители и алгоритмы
5.01Двоичная запись числа
5.02Бит чётности
5.03Работа с цифрами числа
5.04Нестандартные задачи
Решаем задачи
Автомат обрабатывает натуральное число N по следующему алгоритму:
1. Строится двоичная запись числа .
2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления
полученной суммы на .
3. Предыдущий пункт повторяется для записи с добавленной цифрой.
4. Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число . Алгоритм работает следующим образом:
1. Двоичная запись числа .
2. Сумма цифр двоичной записи , остаток от деления на равен , новая запись .
3. Сумма цифр полученной записи , остаток от деления на равен , новая запись .
4. На экран выводится число .
Какое наименьшее число, большее вашего балла на ЕГЭ (), может появится на экране в результате работы
автомата?
Показать ответ и решение
for i in range(1000000): s = bin(i)[2::] s += str(s.count(’1’) % 2) s += str(s.count(’1’) % 2) if int(s, 2) > 100: print(int(s, 2)) break
Аналитическое решение:
Имеется число . Все числа в двоичной записи складываются и добавляется остаток от деления на 2 этой суммы, то
есть цифра 0 или 1, значит если сумма чётна, то дописываем 0, иначе 1. Если мы дописали единичку, то количество единиц
увеличится на 1, а значит, что после этого сумма будет чётна, и уже в следующем пункте мы допишем нолик. Если мы
дописали ноль, то сумма числа не меняется, а значит в следующем пункте мы также допишем нолик. Значит число в 2 СС
заканчивается на 00 или 10.
Нам необходимо найти число, большее, чем 100, которое в 2 СС заканчивается на 00 или 10. Будем перебирать с
минимального.
Подойдет ли число ? Нет, оно кончается на 01.
Подойдет ли число ? Да, так как оно заканчивается на 10. Значит это и есть наш ответ.
Показать ответ и решение
for i in range(1000000): s = bin(i)[2:] s += str(s.count(’1’) % 2) s += str(s.count(’1’) % 2) if int(s, 2) > 1024: print(int(s, 2)) break
Показать ответ и решение
for n in range(1, 1000): r = bin(n)[2:] r += r[-1] if bin(n)[2:].count(’1’) % 2 == 0: r += ’0’ else: r += ’1’ if r.count(’1’) % 2 == 0: r += ’0’ else: r += ’1’ if int(r, 2) > 120: print(n) break
Показать ответ и решение
Решение программой:
for i in range(1, 1000000): s = bin(i)[2::] s += ’1’ if s.count(’1’) % 2 == 0: s += ’0’ else: s += ’1’ # второй if не нужен, потому что всегда будет дописываться 0 # подумайте почему) if s.count(’1’) % 2 == 0: s += ’0’ else: s += ’1’ if int(s, 2) > 212: print(int(s, 2)) break
Аналитическое решение:
Каким бы не было число, на втором шаге к нему всегда дописывается единица, так что давайте называть это число
«изначальным».
Если изначальное число имеет чётное количество единиц, то после добавления нуля количество единиц не
изменится, а потому на следующем шаге также добавится ноль. Итого к числу допишут два нуля.
Если изначально число имеет нечётное количество единиц, то после добавления единицы количество единиц
увеличится на , что означает, что количество единиц станет чётным числом, а значит на следующем шаге уже будут
добавлять ноль. Итого к числу допишут единицу и ноль.
Значит мы будем проверять только числа, которые кончаются на или .
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после
алгоритма не могло.
Могло ли получиться число ? В двоичной СС оно выглядит как . Так что вполне возможно. Если
откинем последние три цифры, то у нас останется число , добавим к нему единицу и получим число , у
него чётное число единиц, а значит после работы алгоритма к нему дописали бы два нуля, но мы откинули , а значит
это не то число, которое нам нужно.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после
алгоритма не могло.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после
алгоритма не могло.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после
алгоритма не могло.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после
алгоритма не могло.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после
алгоритма не могло.
Могло ли получиться число ? В двоичной СС оно выглядит как . Так что вполне возможно. Если
откинем последние три цифры, то у нас останется число , добавим к нему единицу и получим число , у
него нечётное число единиц, а значит после работы алгоритма к нему дописали бы единицу и ноль, но мы откинули , а
значит это не то число, которое нам нужно.
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после
алгоритма не могло.
Могло ли получиться число ? В двоичной СС оно выглядит как . Так что вполне возможно. Если
откинем последние три цифры, то у нас останется число , добавим к нему единицу и получим число , у
него нечётное число единиц, а значит после работы алгоритма к нему дописали бы единицу и ноль, а мы откинули как раз
, значит – это интересующее нас число.
Показать ответ и решение
for i in range(10000):
s = bin(i)[2::]
if i % 2 == 0:
s += ’11’
else:
s += ’00’
x = int(s, 2) — len(bin(i)[2::]) # Длина в 2-сс числа N
if x == 126:
print(i)
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим
образом:
1)Строится двоичная запись числа N.
2)К этой записи дописываются справа ещё два разряда по следующему правилу:
а)Дописывается справа бит чётности: 0, если в двоичном коде числа N было чётное число единиц, и 1, если
нечётное;
б)К полученному результату дописывается ещё один бит чётности
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной
записью искомого числа R.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число, большее, чем
78. В ответе это число запишите в десятичной системе.
Показать ответ и решение
for i in range(1, 1000): s = bin(i)[2::] if s.count(’1’) % 2 == 0: s += ’0’ else: s += ’1’ if s.count(’1’) % 2 == 0: s += ’0’ else: s += ’1’ if int(s, 2) > 78: print(i) break
Аналитическое решение:
Если изначальное число имеет чётное количество единиц, то после добавления нуля количество единиц не
изменится, а потому на следующем шаге также добавится ноль. Итого к числу допишут два нуля.
Если изначально число имеет нечётное количество единиц, то после добавления единицы количество единиц
увеличится на 1, что означает, что количество единиц станет чётным числом, а значит на следующем шаге уже будут
добавлять ноль. Итого к числу допишут единицу и ноль.
Значит мы будем проверять только числа, которые кончаются на или .
Могло ли получиться число ? Нет, в двоичной СС оно выглядит как , а значит получиться после
алгоритма не могло.
Могло ли получиться число 80? В двоичной СС оно выглядит как . Так что вполне возможно. Если откинем
последние две цифры, то у нас останется число , у него чётное число единиц, а значит после работы алгоритма к
нему дописали бы два нуля, но это как раз те самые цифры, которые мы откинули, значит и есть искомое
число.
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число R следующим
образом.
1) Строится двоичная запись числа
2) К этой записи дописываются разряды по следующему правилу:
а) если число чётное, то к двоичной записи числа в конце дописывается
б) если число нечётное, то к двоичной записи числа в конце дописывается
Полученная таким образом запись является двоичной записью искомого числа . Укажите наибольшее число
меньшее , которое может получиться после обработки этого алгоритма. В ответе запишите это число в десятичной
записи.
Показать ответ и решение
Рассмотрим первое число . Переведем в двоичную сс и получим . Отрубим две последние цифры и
получим число нечетное, а значит должно было добавиться . Значит не подходит.
Похоже это число мы сразу можем угадать. У нас есть и к нему должно добавить . Получаем число
. (Число также не подходит т.к. )
Решение №2
ans = 0 for i in range(1000): s = bin(i)[2::] if i % 2 == 0: s += ’11’ else: s += ’01’ if int(s, 2) < 128: ans = max(ans, int(s, 2)) print(ans)
Показать ответ и решение
ans = 0 for i in range(1, 1000): s = bin(i)[2:] s += str(s.count(’1’) % 2) s += str(s.count(’1’) % 2) if int(s, 2) < 77 and int(s, 2) > ans: ans = int(s, 2) print(ans)
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число следующим
образом.
1) Строится двоичная запись числа
2) К этой записи дописываются разряды по следующему правилу:
а) если число чётное, то к двоичной записи числа в конце дописывается
б) если число нечётное, то к двоичной записи числа в конце дописывается
Полученная таким образом запись является двоичной записью искомого числа . Укажите наибольшее число ,
меньшее , которое может получиться после обработки этого алгоритма. В ответе запишите это число в десятичной
записи.
Показать ответ и решение
Решение №1
Рассмотрим первое максимально возможное число , меньшее , а именно . Переведем в двоичную систему
счисления и получим . Уберём две последние цифры и получим нечетное число, а значит к исходному
числу должно было добавиться . Значит, число не могло получиться в результате работы
алгоритма.
Теперь мы сразу можем угадать число . У нас есть , и к нему нужно добавить . Получаем число
.
Решение №2
ans = 0 for i in range(1000): s = bin(i)[2::] if i % 2 == 0: s += ’11’ else: s += ’01’ if int(s, 2) < 128: ans = max(ans, int(s, 2)) print(ans)
Показать ответ и решение
for i in range(1, 100000): s = bin(i)[2:] s += str(s.count(’1’) % 2) s += str(s.count(’1’) % 2) r = int(s, 2) if r > 103: print(r) break
Показать ответ и решение
for n in range(1, 10000): r = bin(n)[2:] r = r + str(r.count(’1’) % 2) r = r + str(r.count(’1’) % 2) r = int(r, 2) if r > 150: print(r) break
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число следующим
образом.
1. Строится двоичная запись числа .
2. К этой записи дописывается единица.
3. Затем справа дописывается бит чётности: , если в двоичном коде полученного числа чётное число единиц, и ,
если нечётное.
4. К полученному результату дописывается ещё один бит чётности.
Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа ) является двоичной
записью искомого числа . Какое минимальное число , большее , может быть получено в результате работы
автомата?
Показать ответ и решение
for i in range(100000): n = i s = bin(n)[2:] s = s + ’1’ s = s + str(s.count(’1’) % 2) s = s + str(s.count(’1’) % 2) r = int(s, 2) if r > 168: print(r) break
Аналитическое решение:
Имеется число . В любом случае к нему дописывается единица, поэтому будем рассуждать, будто бы число и было
таким(с дописанной единицей) изначально. Если количество единиц чётно, то и сумма цифр числа чётна, а значит к числу
допишется ноль. Если же количество единиц нечётно, то и сумма цифр числа нечётна, а значит к числу допишется
единица. Если мы дописали единичку, то количество единиц увеличится на 1, а значит, что после этого сумма
будет чётна, и уже в следующем пункте мы допишем нолик. Если мы дописали ноль, то сумма числа не
меняется, а значит в следующем пункте мы также допишем нолик. Значит число в 2 СС заканчивается на
100 или 110 (учли, что мы изначально при любых обстоятельствах дописываем единицу, а потом 00 или
10).
Нам необходимо найти число, большее, чем 168, которое в 2 СС заканчивается на 100 или 110. Будем перебирать с
минимального.
Подойдет ли число ? Нет, оно кончается на 001.
Подойдет ли число ? Нет, оно кончается на 010.
Подойдет ли число ? Нет, оно кончается на 011.
Подойдет ли число ? Да, так как оно заканчивается на 100. Значит это и есть наш
ответ.
Показать ответ и решение
Аналитическое решение:
Заметим, что если число единиц в двоичной записи нечётное, то в первый раз допишется единица, а затем число единиц
станет чётным, и во второй раз мы допишем ноль. Если же число единиц в двоичной записи чётное, то в первый раз мы
допишем ноль, затем количество единиц не изменится, и мы снова допишем ноль. Таким образом, в любом случае
последняя цифра числа — ноль. Напишем программу:
for i in range(1, 100): s = bin(i)[2::] a = 0 for j in range(len(s)): a += int(s[j]) if a % 2 == 0: s += ’00’ else: s += ’10’ if int(s, 2) > 43: print(int(s, 2)) break
Урок посвящен тому, как решать 5 задание ЕГЭ по информатике
Содержание:
- Объяснение 5 задания
- Исполнитель для возведения в квадрат, деления, умножения и сложения
- Проверка числовой последовательности на соответствие алгоритму
- Разбор 5 задания
- Решение задания про алгоритм, который строит число R
- Решение заданий для темы Проверка числовой последовательности (Автомат)
5-е задание: «Анализ алгоритмов и исполнители»
Уровень сложности
— базовый,
Требуется использование специализированного программного обеспечения
— нет,
Максимальный балл
— 1,
Примерное время выполнения
— 4 минуты.
Проверяемые элементы содержания: Формальное исполнение алгоритма, записанного на естественном языке, или умение создавать линейный алгоритм для формального исполнителя с ограниченным набором команд
До ЕГЭ 2021 года — это было задание № 6 ЕГЭ
Типичные ошибки и рекомендации по их предотвращению:
«Как и в других заданиях базового уровня сложности, источником ошибок служит недостаточная внимательность и отсутствие или поверхностность самостоятельной проверки полученного ответа»
ФГБНУ «Федеральный институт педагогических измерений»
Проверка числовой последовательности на соответствие алгоритму
- для выполнения некоторых заданий необходимо повторить тему системы счисления;
- максимальное значение суммы цифр десятичного числа — это 18, так как 9 + 9 = 18;
- для проверки правильности переданного сообщения иногда вводится бит четности — дополнительный бит, которым дополняется двоичный код таким образом, чтобы в результате количество единиц стало четным: т.е. если в исходном сообщении количество единиц было четным, то добавляется 0, если нечетным — добавляется 1:
например: 310 = 112 после добавления бита четности: 110 ---- 410 = 1002 после добавления бита четности: 1001
например: 1112 - это 710 добавим 0 справа: 11102 - это 1410
Теперь будем рассматривать конкретные типовые экзаменационные варианты по информатике с объяснением их решения.
Разбор 5 задания
Задание демонстрационного варианта 2022 года ФИПИ
Плейлист видеоразборов задания на YouTube:
Решение задания про алгоритм, который строит число R
5_11:
На вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число R следующим образом:
- Строится двоичная запись числа 4N.
- К этой записи дописываются справа еще два разряда по следующему правилу:
- складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 10000 преобразуется в запись 100001;
- над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на 2.
Полученная таким образом запись является двоичной записью искомого числа R.
Укажите такое наименьшее число N, для которого результат работы алгоритма больше 129. В ответе это число запишите в десятичной системе счисления.
Типовые задания для тренировки
✍ Решение:
-
✎ Решение аналитическим способом:
- Заметим, что после выполнения второго пункта задания, будут получаться только четные числа! Наименьшим возможным четным числом, превышающим 129, является число 130. С ним и будем работать.
- Переведем 130 в двоичную систему счисления. Используя компьютер это можно сделать с помощью программистского режима калькулятора. Либо в консоли интерпретатора Python набрать
bin(130)
. Получим:
13010 = 100000102
в обратном порядке: было 1000001 -> стало 10000010 еще раз то же самое: было 100000 -> стало 1000001
int('100000',2)
.1000002 = 3210
✎ Решение с использованием программирования:
PascalAbc.Net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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. |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 |
Результат: 8
Для более детального разбора предлагаем посмотреть видео теоретического решения данного 5 задания ЕГЭ по информатике:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь (теоретическое решение)
5_12: Демоверсия ЕГЭ 2018 информатика:
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Строится двоичная запись числа N.
- К этой записи дописываются справа ещё два разряда по следующему правилу:
- складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
- над этой записью производятся те же действия – справа дописывается остаток от деления суммы её цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите минимальное число R, которое превышает число 83 и может являться результатом работы данного алгоритма. В ответе это число запишите в десятичной системе счисления.
✍ Решение:
- Заметим, что после второго пункта условия задачи получаются только четные числа (т.к. если число в двоичной системе заканчивается на 0, то оно четное). Таким образом, нас будут интересовать только четные числа.
- Наименьшим возможным числом, превышающим 83, является число 84. С ним и будем работать.
- Переведем 84 в двоичную систему счисления. На компьютерном ЕГЭ это можно сделать с помощью программистского режима калькулятора. Либо в консоли интерпретатора Python набрать
bin(84)
. Получим:
84 = 1010100
86 = 1010110
Результат: 86
Подробное решение данного 5 (раньше №6) задания из демоверсии ЕГЭ 2018 года смотрите на видео:
Видеорешение с программированием (PascalAnc.Net):
📹 YouTube здесь
📹 Видеорешение на RuTube здесь
Аналитическое видеорешение:
📹 Видеорешение на RuTube здесь -> аналитическое решение
5_18:
Алгоритм получает на вход натуральное число N > 1
и строит по нему новое число R
следующим образом:
1. Строится двоичная запись числа N
.
2. Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется её последняя цифра. В противном случае в конец записи добавляется цифра, которая встречается реже.
3. Шаг 2 повторяется ещё два раза.
4. Результат переводится в десятичную систему счисления.
При каком наименьшем исходном числе N > 65
в результате работы алгоритма получится число, кратное 4?
Типовые задания для тренировки
✍ Решение:
-
✎ Решение с использованием программирования:
PascalAbc.Net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
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. |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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 |
Ответ: 79
5_19:
На вход алгоритма подаётся натуральное число N
. Алгоритм строит по нему новое число R
следующим образом.
1) Число N
переводим в двоичную запись.
2) Инвертируем все биты числа кроме первого.
3) Переводим в десятичную запись.
4) Складываем результат с исходным числом N
.
Полученное число является искомым числом R
.
Укажите наименьшее нечетное число N
, для которого результат работы данного алгоритма больше 99. В ответе это число запишите в десятичной системе счисления.
✍ Решение:
-
✎ Решение с использованием программирования:
PascalAbc.Net:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 |
Ответ: 65
5_13:
На вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа еще два разряда по следующему правилу:
— если N делится нацело на 4, в конец числа (справа) дописывается сначала ноль, а затем еще один ноль;
— если N при делении на 4 дает в остатке 1, то в конец числа (справа) дописывается сначала ноль, а затем единица;
— если N при делении на 4 дает в остатке 2, то в конец числа (справа) дописывается сначала один, а затем ноль;
— если N при делении на 4 дает в остатке 3, в конец числа (справа) дописывается сначала один, а затем еще одна единица.
Например, двоичная запись 1001 числа 9 будет преобразована в 100101, а двоичная запись 1100 числа 12 будет преобразована в 110000.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью числа R — результата работы данного алгоритма.
Укажите максимальное число R, которое меньше 100 и может являться результатом работы данного алгоритма. В ответе это число запишите
в десятичной системе счисления
.
Типовые задания для тренировки
✍ Решение:
- Поскольку требуется найти наибольшее число, то возьмем наибольшее из возможных чисел, которые < 100 — это число 99. Переведем его в двоичную систему. На компьютерном ЕГЭ это можно сделать с помощью программистского режима калькулятора. Либо в консоли интерпретатора Python набрать
bin(99)
. Получим:
99 = 11000112
1100011 N
int('11000',2)
11000 = 2410
98 = 11000102 : 10 в конце добавлено алгоритмом N = 110002 = 2410 24 делится нацело на 4. По алгоритму в конце должно быть 00, а мы имеем 10 98 - не подходит 97 = 11000012 : 01 в конце добавлено алгоритмом N = 110002 = 2410 24 делится нацело на 4. По алгоритму в конце должно быть 00, а мы имеем 01 97 - не подходит 96 = 11000002 : 00 в конце добавлено алгоритмом N = 110002 = 2410 24 делится нацело на 4. По алгоритму в конце должно быть 00, у нас 00 - верно! 96 - подходит!
Результат: 96
Предлагаем посмотреть видео теоретического решения:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь (теоретическое решение)
5_14:
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. К этой записи дописывается (дублируется) последняя цифра.
3. Затем справа дописывается бит чётности: 0, если в двоичном коде полученного числа чётное число единиц, и 1, если нечётное.
4. К полученному результату дописывается ещё один бит чётности.
Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите минимальное число R, большее 114, которое может быть получено в результате работы этого алгоритма. В ответе это число запишите в десятичной системе.
Типовые задания для тренировки
✍ Решение:
-
✎ Решение аналитическим способом:
- В постановке задания задано R > 114. R — это результат работы алгоритма. Для того, чтобы определить наименьшее возможно N, переведем сначала 114 в двоичную систему счисления и выделим в нем три добавленные по алгоритму цифры (перевод можно выполнить в консоли Питона:
bin(114)
)
114 = 11100102
2. В полученное числе N = 1110 дублируется последняя цифра и получается 11100.
3. Поскольку число единиц (3) — нечетное, то справа добавляется 1: 111001.
4. Т.к. в полученном наборе цифр четное число единиц, то добавляем 0: 1110010
1. N = 1110 + 1 = 1111 Работа по алгоритму: 2. 11111 - дублирование последней цифры. 3. 111111 - справа дописываем единицу, т.к. в полученном числе 5 единиц (нечетное) 4. 1111110 - дописываем ноль, т.к. в полученном числе четное число единиц.
int('1111110',2)
):min R = 11111102 = 12610
✎ Решение с использованием программирования:
PascalAbc.Net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
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. |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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
5_17: Досрочный вариант 1 ЕГЭ по информатике 2020, ФИПИ:
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число следующим образом.
1) Строится двоичная запись числа N.
2) К этой записи дописываются справа ещё два разряда по следующему правилу:
— если N чётное, в конец числа (справа) дописываются два нуля, в противном случае справа дописываются две единицы.
Например, двоичная запись 1001 числа 9 будет преобразована в 100111.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью числа – результата работы данного алгоритма.
Укажите минимальное число N, для которого результат работы алгоритма будет больше 134. В ответе это число запишите в десятичной системе счисления.
Ответ: 33
Видео -> теоретическое решение
📹 Видеорешение на RuTube здесь -> теоретическое решение
5_16:
Автомат обрабатывает целое число N (0 ≤ N ≤ 255) по следующему алгоритму:
1. Строится восьмибитная двоичная запись числа N.
2. Все цифры двоичной записи заменяются на противоположные (0 на 1, 1 на 0).
3. Полученное число переводится в десятичную запись.
4. Из нового числа вычитается исходное, полученная разность выводится на экран.
Какое число нужно ввести в автомат, чтобы в результате получилось 45?
✍ Решение:
- Результатом выполнения алгоритма является число 45. Алгоритм работает в двоичной системе счисления, поэтому переведем число:
45 = 001011012
1 - 0
, с учетом, что у разряда с единицей заняли. То есть бит:. _ 1 _ _ _ _ _ _ _ N инвертируемое = 0 _ _ _ _ _ _ _ N исходное 0 0 1 0 1 1 0 1 = 45 результат
1 - 0
не может в результате дать 0, так как у следующей слева единицы мы заняли. Значит, 0 - 1
. Чтобы не получить единицу в ответе, необходимо у нуля тоже занять:. . _ 1 0 _ _ _ _ _ _ = 0 1 _ _ _ _ _ _ 0 0 1 0 1 1 0 1 = 45 результат
1 - 0
не может быть, так как у следующего слева нуля мы заняли.Значит
0 - 1
. То есть как раз чтобы получить единицу (10 - 1 = 1
), занимаем у следующих слева разрядов:. . _ 1 0 0 _ _ _ _ _ = 0 1 1 _ _ _ _ _ 0 0 1 0 1 1 0 1 = 45 результат
0 - 1
не может быть. Значит, чтобы получить в результате ноль, берем 1 - 0
, у единицы должно быть занято.. . . _ 1 0 0 1 _ _ _ _ = 0 1 1 0 _ _ _ _ 0 0 1 0 1 1 0 1 = 45 результат
1 - 0
не может быть. Так как слева у единицы занято. Значит, чтобы получить в результате 1, берем 0 - 1
:. . . _ 1 0 0 1 0 _ _ _ = 0 1 1 0 1 _ _ _ 0 0 1 0 1 1 0 1 = 45 результат
0 - 1
не даст в ответе единицу, значит, имеем 1 - 0
:. . . _ 1 0 0 1 0 1 _ _ = 0 1 1 0 1 0 _ _ 0 0 1 0 1 1 0 1 = 45 результат
0 - 1
не может быть, значит, 1 - 0
. Чтобы получить в результате 0, необходимо, чтобы у 1 было занято:. . . . _ 1 0 0 1 0 1 1 _ = 0 1 1 0 1 0 0 _ 0 0 1 0 1 1 0 1 = 45 результат
0 - 1
:. . . . _ 1 0 0 1 0 1 1 0 = 0 1 1 0 1 0 0 1 0 0 1 0 1 1 0 1 = 45 результат
01101001 = 10510
Ответ: 105
Смотрите теоретический разбор задания на видео и подписывайтесь на наш канал:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь -> теоретическое решение
Решение заданий для темы Проверка числовой последовательности (Автомат)
5_7:
Автомат получает на вход четырёхзначное число. По этому числу строится новое число по следующим правилам.
- Складываются первая и вторая, а также третья и четвёртая цифры исходного числа.
- Полученные два числа записываются друг за другом в порядке убывания (без разделителей).
Пример. Исходное число: 3165. Суммы: 3 + 1 = 4; 6 + 5 = 11. Результат: 114.
Укажите наименьшее число, в результате обработки которого, автомат выдаст число 1311.
✍ Решение:
Результат: 2949
Процесс теоретического решения данного 5 задания представлен в видеоуроке:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь -> теоретическое решение
5_8:
Автомат получает на вход четырехзначное число. По нему строится новое число по следующим правилам:
- Складываются первая и вторая, затем вторая и третья, а далее третья и четвёртая цифры исходного числа.
- Полученные три числа записываются друг за другом в порядке возрастания (без разделителей).
Пример: Исходное число: 7531. Суммы: 7+5=12; 5+3=8; 3+1=4. Результат: 4812.
✍ Решение:
2
, 5
, 12
9
:12=9+3
93**
9320
.Результат: 9320
Подробное теоретическое решение данного 5 задания можно просмотреть на видео:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь -> теоретическое решение
5_9:
Автомат получает на вход два двузначных шестнадцатеричных числа. В этих числах все цифры не превосходят цифру 6 (если в числе есть цифра больше 6, автомат отказывается работать). По этим числам строится новое шестнадцатеричное число по следующим правилам:
- Вычисляются два шестнадцатеричных числа — сумма старших разрядов полученных чисел и сумма младших разрядов этих чисел.
- Полученные два шестнадцатеричных числа записываются друг за другом в порядке убывания (без разделителей).
Пример: Исходные числа: 25, 66. Поразрядные суммы: 8, B. Результат: B8.
Какие из предложенных чисел могут быть результатом работы автомата?
Перечислите в алфавитном порядке буквы, соответствующие этим числам, без пробелов и знаков препинания.
Варианты:
A) 127
B) C6
C) BA
D) E3
E) D1
✍ Решение:
Проанализируем все варианты:
12
в шестнадцатеричной системе записывается как С
.С6
разбиваем на 12
и 6
. Число может быть результатом работы автомата. Исходные числа, например, 35
и 37
BA
разбиваем на 11
и 10
. Число может быть результатом работы автомата. Исходные числа, например, 55
и 56
E3
разбиваем на 14
и 3
. 14=6+8
, но цифры большие 6 не принимает автомат. Не подходит.D1
разбиваем на 13
и 1
. 13=6+7
, но цифры большие 6 не принимает автомат. Не подходит.Результат: BC
Подробное теоретическое решение данного 5 задания можно просмотреть на видео:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь -> теоретическое решение
5_10: Задание 5 ГВЭ 11 класс 2018 год ФИПИ
Автомат получает на вход два двузначных шестнадцатеричных числа. В этих числах все цифры не превосходят цифру 7 (если в числе есть цифра больше 7, автомат отказывается работать). По этим числам строится новое шестнадцатеричное число по следующим правилам.
1. Вычисляются два шестнадцатеричных числа: сумма старших разрядов полученных чисел и сумма младших разрядов этих чисел.
2. Полученные два шестнадцатеричных числа записываются друг за другом в порядке возрастания (без разделителей).
Пример. Исходные числа: 66, 43. Поразрядные суммы: A, 9. Результат: 9A.
Определите, какое из предложенных чисел может быть результатом работы автомата.
Варианты:
1) AD
2) 64
3) CF
4) 811
✍ Решение:
Теоретическое решение 4 задания ГВЭ 11 класса смотрите на видео:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь -> теоретическое решение
5_15:
Автомат получает на вход натуральное число X. По этому числу строится трёхзначное число Y по следующим правилам:
1. Первая цифра числа Y (разряд сотен) – остаток от деления X на 7.
2. Вторая цифра числа Y (разряд десятков) – остаток от деления X на 2.
3. Третья цифра числа Y (разряд единиц) – остаток от деления X на 5.
Пример. Исходное число: 55. Остаток от деления на 7 равен 6; остаток от деления на 2 равен 1; остаток от деления на 5 равен 0. Результат работы автомата: 610.
Сколько существует двузначных чисел, при обработке которого автомат выдаёт результат 312?
Типовые задания для тренировки
✍ Решение:
- Обозначим каждую цифру числа Y согласно заданию:
Y = 3 1 2 x mod 7 x mod 2 x mod 5
1. x mod 2 = 1 => значит, X — нечетное число
2. x mod 5 = 2 => значит, X — либо ?2, либо ?7.
3. раз x — нечетное, то из пред. пункта получаем x = ?7
4. x mod 7 = 3 => переберем все варианты:
97 - не подходит, 87 - подходит (87 / 7 = 12, остаток = 3) 77 - не подходит, 67 - не подходит, 57 - не подходит, 47 - не подходит, 37 - не подходит, 27 - не подходит, 17 - подходит (17 / 7 = 2, остаток = 3)
Результат: 2
Перейти к контенту
§ 2. Передача данных ГДЗ по Информатике 11 класс. Углубленный уровень. В 2 ч. Поляков К.Ю.
7. Что такое бит чётности? В каких случаях с помощью бита чётности можно обнаружить ошибку, а в каких — нельзя?
Ответ
Бит чётности (англ. Parity bit) — контрольный бит в вычислительной технике и сетях передачи данных, служащий для проверки общей чётности двоичного числа (чётности количества единичных битов в числе). В последовательной передаче данных часто используется формат 7 бит данных, бит чётности, один или два стоповых бита. Такой формат аккуратно размещает все 7-битные ASCII символы в удобный 8-битный байт. Также допустимы другие форматы: 8 бит данных и бит чётности.
В длинной цепочке применение бита чётности позволяет обнаруживать нечётное число ошибок (1, 3, 5, …), а ошибки в чётном количестве разрядов остаются незамеченными. Контроль с помощью бита чётности применяется для небольших блоков данных (чаще всего — для каждого отдельного байта) и хорошо работает тогда, когда отдельные ошибки при передаче независимы одна от другой и встречаются редко.
Если при передаче неверно передан только один из битов, количество единиц в сообщении стало нечётным, это и служит признаком ошибки при передаче. Однако исправить ошибку нельзя, потому что непонятно, в каком именно разряде она случилась. Если же изменилось два бита, чётность не меняется, и такая ошибка не обнаруживается.