Задание 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.