5.02 Запись числа в другой системе счисления
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится восьмеричная запись числа N.
2. Далее эта запись обрабатывается по следующим правилам:
а) если число N делится на 4, то к этой записи слева дописывается 1;
б) если число N не делится на 4, то к этой записи справа дописывается 1.
Полученная таким образом запись является восьмеричной записью искомого числа R.
Например, для исходного числа результатом является число
, а для исходного числа
результатом является число
.
Сколько различных значений R, больших 590 и меньших 650, может быть получено с помощью полученного алгоритма? В ответе запишите это число в десятичной системе счисления.
В этой задаче нам нужно реализовать алгоритм, который по входному натуральному числу N строит новое число R через его восьмеричную запись. Сначала мы переводим число N в восьмеричную систему счисления, используя встроенную функцию oct, и убираем префикс 0o, чтобы получить чистую строку цифр в восьмеричной системе. Затем мы проверяем делимость числа N на 4: если число делится на 4 без остатка, мы добавляем цифру ’1’ в начало восьмеричной строки, а если не делится — добавляем ’1’ в конец этой строки. Полученная таким образом строка — это восьмеричное представление числа R. Для последующей проверки мы переводим эту строку обратно в десятичное число. После этого в диапазоне чисел от 1 до 199 мы перебираем все возможные N, применяем к ним описанный алгоритм, и проверяем, какие значения R получаются строго больше 590 и строго меньше 650. Все такие значения R собираем в множество, чтобы не считать повторяющиеся, и в итоге выводим количество уникальных значений.
a = set() # Создаем множество для хранения уникальных значений R for n in range(1, 200): s = oct(n)[2:] # Переводим число n в восьмеричную систему счисления, убираем префикс ’0o’ if n % 4 == 0: # Если число n делится на 4 без остатка s = ’1’ + s # Добавляем ’1’ в начало восьмеричной записи if n % 4 != 0: # Если число n не делится на 4 без остатка s = s + ’1’ # Добавляем ’1’ в конец восьмеричной записи r = int(s, 8) # Переводим полученную восьмеричную строку обратно в десятичное число if 590 < r < 650: # Проверяем, что r строго больше 590 и меньше 650 a.add(r) # Добавляем значение r в множество, чтобы учитывать только уникальные значения print(len(a)) # Выводим количество уникальных значений R, удовлетворяющих условию
Специальные программы

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

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

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

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

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

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