Как переводить число в другие системы счисления?

В задании номер 14 ЕГЭ необходимо получать запись числа в системе счисления с разными основаниями. Поэтому встроенной функции питона bin() уже недостаточно. Необходимо писать алгоритм перевода. Рекомендую не учить алгоритм, а писать его на основе “ручного” перевода чисел: делить число нацело пока от него не останется 0 и выписывать все остатки от деления в обратном порядке.

Рассмотрим задание из открытого варианта 2025. https://openfipi.devinf.ru/task/3F4398

Необходимо посчитать количество нулей в семеричной записи.
Вообще, для этого необязательно строить всю семеричную запись. Достаточно в процессе перевода считать количество нулей в остатках (способ 1).

Но популярным способом является сохранение всей записи и подсчет количества цифр методом count, который есть и у строк и у списков. Поэтому можно решить и через строку (вариант 2) и через список (вариант 3).

Плюсом первого способа, несомненно, является отсутствие необходимости хранить запись числа (экономия памяти) и независимость от основания системы счисления.

Способ со строками может давать неверный ответ при основаниях больших 9. Например, цифра А (10) будет в строке записана как 10, и даст один лишний ноль при подсчете.

Решение через списки лишено этого недостатка, поскольку каждый элемент списка хранится отдельно.

Лично я рекомендовал бы способ 1, в крайнем случае (если вы все же запоминаете алгоритм без понимания его работы), способ 3.

А как вы предпочитаете переводить числа с помощью программирования?

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.