14.02 Поиск цифр(-ы) числа
Ошибка.
Попробуйте повторить позже
Некоторое число X из десятичной системы счисления перевели в системы счисления с основаниями 16, 8, 4. Часть символов при записи утеряна. Позиции утерянных символов обозначены знаком *:
X
Определите X.
В этой задаче нам дано число X в десятичной системе, которое частично известно в других системах счисления: ,
и
, где * обозначает утерянные символы. Наша цель — определить X, используя информацию о
совпадении цифр в различных системах. Для этого мы создаём вспомогательную функцию fr(num), которая
преобразует десятичное число num в строковое представление в четверичной системе счисления. Внутри
функции мы используем цикл while, где на каждом шаге берём остаток от деления числа на 4 (n % 4) для
получения младшего разряда и добавляем его в начало строки t, после чего делим n на 4 для перехода к
следующему разряду. Эта функция позволяет сравнивать конкретные позиции цифр числа в четверичной
системе.
Основной алгоритм заключается в переборе всех возможных чисел X от 0 до некоторого верхнего предела (здесь 5000). Для каждого X мы получаем его шестнадцатеричное (hex(x)[2:]), восьмеричное (oct(x)[2:]) и четверичное (fr(x)) представления и проверяем соответствие известным позициям: средняя цифра в шестнадцатеричной записи равна ’3’, первая и последняя цифры в восьмеричной записи равны ’4’ и ’1’ соответственно, а последняя цифра в четверичной записи равна ’1’. Если все условия выполняются одновременно, это означает, что найдено число X, удовлетворяющее всем системам счисления, и мы его выводим.
# Функция для преобразования числа из десятичной системы в четверичную строку def fr(num): n = num # Сохраняем исходное число в отдельной переменной t = ’’ # Строка для накопления результата while n > 0: # Берём остаток от деления на 4, чтобы получить младший разряд в четверичной системе t = str(n % 4) + t # Добавляем цифру в начало строки n = n // 4 # Делим число на 4 для перехода к следующему разряду return t # Перебор всех возможных чисел X от 0 до 4999 for x in range(5000): hx = hex(x)[2:] # Получаем шестнадцатеричное представление числа в виде строки, без префикса ’0x’ ot = oct(x)[2:] # Получаем восьмеричное представление числа в виде строки, без префикса ’0o’ f = fr(x) # Получаем четверичное представление числа в виде строки # Проверяем соответствие известным цифрам во всех системах if (len(hx) == 3 and hx[1] == ’3’ # Средняя цифра в шестнадцатеричной записи равна ’3’ and len(ot) == 3 and ot[0] == ’4’ and ot[2] == ’1’ # Первая и последняя цифры в восьмеричной записи and len(f) == 5 and f[-1] == ’1’): # Последняя цифра в четверичной записи равна ’1’ print(x) # Если все условия выполняются, выводим найденное число X
- 305
- 313
Специальные программы

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

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

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

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

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

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