Задание 10 ОГЭ по информатике: решайте с автопроверкой
В задании 10 даны числа, записанные в разных системах счисления. Нужно найти наибольшее или наименьшее из них, перевести результат в другую систему или посчитать единицы в двоичной записи. Номер проверяет, понимаете ли вы, как устроена позиционная запись, а программа быстро и точно сверяет ручной перевод.
Решать задачи номераКак решать программой
Python переводит запись в число функцией int(строка, основание) для оснований от 2 до 36. После перевода числа сравниваются обычным max и min.
Обратный перевод в двоичную, восьмеричную и шестнадцатеричную системы делают bin, oct и hex. Количество единиц в двоичной записи — это bin(n).count("1").
Руками полезно уметь переводить через сумму степеней основания: так проверяется ответ программы.
Для задач, где спрашивают, сколько целых чисел лежит между двумя записями, переведите обе в десятичную систему и вычтите. Количество целых чисел между a и b, не считая концов, равно b − a − 1.
Разбор примера
Даны числа 10111₂, 35₈ и 1B₁₆. Какое из них наибольшее в десятичной системе?
nums = [('10111', 2), ('35', 8), ('1B', 16)]
print(max(int(s, base) for s, base in nums))Программа печатает
29
10111₂ — это 23, 35₈ — это 3 · 8 + 5 = 29, 1B₁₆ — это 16 + 11 = 27. Наибольшее из них 29.
Решить эту задачуЗадачи к заданию 10
- Наибольшее из чисел разных системЛёгкаяРешать
- Единицы в двоичной записи минимумаЛёгкаяРешать
- Сумма в другой системе счисленияЛёгкаяРешать
- Сколько целых между двумя записямиЛёгкаяРешать
- Цифра в записи в другой системеЛёгкаяРешать
- Найдите основание системыЛёгкаяРешать
Бесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).
Вопросы и ответы
- Как перевести число из шестнадцатеричной системы?
- int("1B", 16) даёт 27. Буквы можно писать заглавными или строчными.
- Как записать число в двоичной системе?
- bin(n)[2:]: функция bin добавляет в начало префикс 0b.
- Можно ли сравнивать записи без перевода?
- Нет: 100₂ равно 4 и меньше 9₁₀, хотя запись «100» длиннее. Сравнивайте только числа.
- Как посчитать единицы в двоичной записи?
- bin(n).count("1"). Например, у числа 29 запись 11101, в ней четыре единицы.
- Что делать, если основание больше 16?
- int понимает основания до 36: цифры после 9 обозначаются буквами от A до Z.