14.02 Поиск цифр(-ы) числа
Ошибка.
Попробуйте повторить позже
Значение арифметического выражения
записали в системе счисления с основанием 16. Сколько значащих нулей содержится в этой записи?
В задаче требуется посчитать количество значащих нулей в записи некоторого большого числа в шестнадцатеричной
системе счисления. Сначала мы должны вычислить значение самого выражения: оно состоит из нескольких слагаемых,
каждое из которых записано через степень числа 4. Например, первый член означает, что берётся
число
и умножается на 3, второй член
аналогично даёт
, затем добавляются
,
,
и 1. Все эти слагаемые складываются, и мы получаем итоговое число, которое сохраняем в
переменной s. Далее мы должны преобразовать это число в систему счисления с основанием 16. Для этого мы
используем строку alph = ’0123456789ABCDEF’, где последовательно записаны все символы, которые
используются в шестнадцатеричной системе. После этого мы начинаем цикл, в котором берём остаток от деления
текущего числа s на 16 (операция s % 16), чтобы найти последнюю цифру в шестнадцатеричной записи, и с
помощью индексации обращаемся к соответствующему символу в строке alph. Так мы находим символ для
текущей цифры и добавляем его в начало результирующей строки hexed. Затем делим число s нацело
на 16 (операция s //= 16), чтобы отбросить уже найденную цифру, и продолжаем цикл, пока число не
станет равным нулю. В итоге строка hexed будет содержать полную шестнадцатеричную запись исходного
выражения. Последний шаг — подсчитать количество нулей в этой строке. Для этого используем метод
hexed.count(’0’), который возвращает количество символов ’0’ в строке hexed. Полученное число и будет ответом
задачи.
# Вычисляем значение выражения: складываем несколько степеней числа 4, # умноженных на коэффициенты, и добавляем 1 s = 3 * 4 ** 38 + 2 * 4 ** 23 + 4 ** 20 + 3 * 4 ** 5 + 4 ** 4 + 1 # Строка, содержащая все символы шестнадцатеричной системы счисления: # от "0" до "9" и далее "A", "B", "C", "D", "E", "F" alph = "0123456789ABCDEF" # Переменная для хранения шестнадцатеричной записи числа hexed = "" # Цикл, пока число s больше нуля while s > 0: # Остаток от деления числа на 16 даёт индекс нужной цифры # Находим символ в строке alph и добавляем его в начало записи hexed = alph[s % 16] + hexed # Делим число нацело на 16, убирая последнюю цифру s //= 16 # Считаем количество нулей в строке hexed print(hexed.count("0"))
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!