+Оглавление
Разбираем задачу №1 в ЕГЭ по информатике.
Обратите внимание, здесь будет не только пример решения, но и разбор задания по существу.
Для примера я беру демоверсию 2020 года (актуальная на момент написания статьи)
Прежде чем приступать к решению этого примера, посмотрим в спецификацию к демоверсии.
Тут говорится что задача на знание о системах счисления и двоичном представлении информации в памяти компьютера. Элементы содержания и уровни подготовки посмотрим в кодификатору по кодам 1.4.2 и 1.3 соответственно.
Требуется знать только о двоичном представлении информации. Уметь надо оценивать числовые параметры информационных объектов и процессов, а именно объём памяти и скорость передачи. Ничего другого в первом задании быть не может. Что это значит: может быть любое задание на работу с двоичной системой счисления, прямой или косвенный подсчёт количества чего-либо (чисел, цифр, букв, пикселей, бит и и.п.).
Я написал пространную статью про системы счисления в целом, но там нет примера именно двоичной. В этой статье используется понятие размена и порога размена. Для двоичной системы порог устанавливается равным 2. То есть уже две шайбы меняем на гайку, а над цифрами надо будет писать
...1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1 (ряд 1)
Вообще говоря, двоичная система куда проще прочих. В ней надо только складывать и/или вычитать - без умножения.
Если бы у человеков древности было 8 пальцев на руках, а не 10, мы бы компьютерами ещё в древнем Египте обзавелись.
Давайте разбирать теперь задание. У нас здесь косвенный подсчёт количества чисел. Количество строк в списке, чисел в последовательности имеет свой подвох. В таких местах я никогда не полагаюсь на свою память (её и без того есть чем занять), а каждый раз провожу аналогию:
Сколько чисел между 3 и 8?
Сколько чисел от 3 до 8?
Разницу чувствуете?
При натаскивании на эти задания, репетиторы обычно дают формулы с вычитанием. Их три штуки, и надо угадать которая подойдёт. Мы же пойдём другим путём. Просто выпишем все числа от 3 до 8 с небольшим запасом.
2, 3, 4, 5, 6, 7, 8, 9, 10
Теперь выбираем формулировку между. То есть сами эти числа не включаем.
2, 3, 4, 5, 6, 7, 8, 9, 10
Получилось 4 числа. Каким способом (действиями) можно из чисел 8 и 3 получить 4? Я уже проговорился выше, что надо использовать вычитание. Просто вычесть не хватит, ибо получится 5. Догадались уже, наверное:
Теперь мы можем ответить на более сложный вопрос (сложный в том смысле, что выписать весь ряд чисел будет трудновато)
Сколько чисел между 125 и 852?
На месте числа 8 в будет стоять число 852, а на месте 3 - 125.
Проверять нет смысла, потому что мы пользовались законом, который является фундаментальным, а не простой закономерностью. Здесь надо сделать ремарку
Не зная заранее и не имея опыта, невозможно отличить закономерность от закона. Если Вы нашли закономерность, спросите у кого-то знающего, является ли она законом.
Аналогично со второй формулировкой от и до
2, 3, 4, 5, 6, 7, 8, 9, 10
Теперь подходящих чисел уже 6. Формула отличается на знак.
Такой способ "запоминания" формулы на конкретном примере очень выручает тех, кто без формул не может решать задачи. Во всяком случае, проделав это всё на экзамене, Вы будете уверены, что не перепутали формулу. Вам только нужна заготовка из ряда чисел, например, которую дал я. Ну, или хотя бы вспомнить про ряд "коротких" чисел.
Решение задачи
Теперь, что касается непосредственно самой задачи. Числа в ней записаны в двоичной системе счисления, что, вообще-то, наталкивает на мысль записать их в десятичной. Но мы поступим проще: воспользуемся тем же приёмом и выпишем все числа от и до. Для того, кто хорошо натренировался на шайбах и гайках, это труда не составит.
Мне кажется, только ленивый не слышал, и глухой не запомнил, что если неравенство строгое, то само число выбрасываем. Чисел остаётся всего три. Вот Вам и ответ. Просто посчитали.
"А что, так можно было?" - спросят многие. "Конечно можно!" - отвечу я. А что мы тут неправильного сделали? Мы посчитали? Посчитали. Не через формулу, ну и что? Когда это формулы отменяли прямой подсчёт?
Часто мне в таких случаях возражают, что, мол, это в демке легко, а на экзамене будут сложные числа. Есть такой демон отрицания Ни Фи Га. КИМ будет сделан легким с точки зрения вычислений. Значит, чисел трудных не будет. Про трудности, кстати, я тоже писал.
На экзамене важна скорость решения. Сколько времени ушло на запись чисел? Да я в редакторе LaTex набирал их секунд 20. Ручкой от руки писать быстрее гораздо. Кстати, в спецификации на это задание отводится 1 минута (это с учётом открыть, прочитать, понять, выполнить, проверить, записать ответ в бланк). Как раз наш случай.
Бонус. Ещё два варианта решения,
которые один другого дольше.
С прямым вычитанием
Если за столько лет изучения информатики Вы не удосужились научиться записывать по порядку числа в позиционных системах (двоичной), то, придётся пользоваться формулой, которую я уже показал, как запоминать. На месте 8 будет в этот раз стоять 1011111_2, а на месте тройки 10011011_2.
После вычитания столбиком получается число 100 в двоичной записи. Забегая вперёд скажу, что в десятичной это будет 4. Теперь надо вычесть 1. Тут немного хуже, ибо придётся разменивать десятки и сотни (двоичные, разумеется)
Ну и переводим результат в десятичную. Что характерно, получилось тоже 3. Правда, времени ушло больше и есть шанс ошибиться в вычислениях (у кого какой, бывает большой)
Чем этот способ хуже? Придётся вычитать в двоичной системе счисления, а это не всегда так же легко, как в привычной десятичной, даже не смотря на то, что алгоритм тот же от слова "полностью". Более того, практика показывает, что некоторые многие одиннадцатиклассники не умеют вычитать столбиком, и для них тяжело даже в десятичной вычитать.
Избавиться от трудностей поможет способ
С переводом в десятичную систему
Можно сделать то же самое, но перевести числа в десятичную ДО вычислений. Честно говоря, мне делать это лень, поэтому я воспользуюсь калькулятором wolfram (на экзамене нельзя)
Мы выигрываем в привычности вычислений, но существенно проигрываем в числах и времени. Со временем понятно - даже с помощью wolframа я переводил числа больше минуты (пока открыл сайт, пока ввёл команду для первого числа, дождался ответа, потом аналогично для второго). Сколько времени потребуется среднестатистическому школьнику, чтобы перевести два восьмибитных числа в десятичную систему? Много, я считаю, непозволительно много. Проигрыш в числах менее очевиден, тем не менее, вычисления (я честно их не делал, потому что знал ответ) с трёхзначными числами проводить трудновато. Это повезло ещё, что нет переходов через десяток.
Другие типы заданий
Встречались мне задания, которые имеют более хитрую формулировку. Например, границы интервала или отрезка могут быть заданы в разных системах. НО. Тут есть большое и классное, на мой взгляд, "но": это восьмеричная, шестнадцатиричная и четверичная системы. После небольшой тренировки, перевод из этих трёх (4, 8 и 16) в двоичную может происходить у Вас автоматически. Напомню, что
программист одинаково прочитает записи "0h7C" и "0b01111100" ("0h" = 16тиричная и "0b"=2ичная).
После трёхсекнудного перевода в двоичную систему мы получим наше задание. Так быстро, потому что есть отличный закон связи между этими системами счисления:
Перевод из систем с основаниями 4, 8, 16 и т.д. в двоичную осуществляется посимвольно слева направо.
Вот Вам таблица для перевода символов
Заключение
На этом я заканчиваю разбор задания №1. Даже если кто-то скажет "фу, это задание изишное, стоило ли тратить на него время читателей?", я считаю, что стоило. Наверняка каждый почерпнул из моей статьи что-то полезное и/или новое.
Ссылки на мои статьи ещё раз
- Позиционные системы счисления
Ставьте лайк, если понравился разбор, пишите в комментариях, что надо уточнить (или где я ошибся), подписывайтесь на канал, чтобы читать разборы других заданий, когда я их опубликую.