5.02 Запись числа в другой системе счисления
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится восьмеричная запись числа N.
2. Далее эта запись обрабатывается по следующим правилам:
а) если в записи числа больше четных цифр, то складывается сумма всех четных цифр в записи числа, переводится в восьмеричную систему счисления и дописывается в конец числа;
б) если в записи числа больше нечетных цифр, то складывается сумма всех нечетных цифр в записи числа, переводится в восьмеричную систему счисления и дописывается в конец числа;
в) если в записи числа одинаковое количество четных и нечетных цифр, то складывается сумма всех четных цифр в записи числа и делится нацело на 2, затем переводится в восьмеричную систему счисления и дописывается в конец числа;
Полученная таким образом запись является восьмеричной записью искомого числа R.
Например, для исходного числа результатом является число
, а для исходного числа
результатом является число
.
Укажите максимальное число N, для которого искомое число R не больше 870. В ответе запишите это число в десятичной системе счисления.
for n in range(1, 1000): t = oct(n)[2:] # Перевод числа в восьмеричную систему счисления count_even = t.count(’0’) + t.count(’2’) + t.count(’4’) + t.count(’6’) # Подсчёт чётных цифр в числе count_odd = t.count(’1’) + t.count(’3’) + t.count(’5’) + t.count(’7’) # Подсчёт нечётных цифр в числе sum_digits = 0 # Переменная для суммы цифр if count_even > count_odd: # Если чётных цифр больше for i in t: # Складываем чётные цифры записи if int(i) % 2 == 0: sum_digits += int(i) t += oct(sum_digits)[2:] # Добавляем к числу восьмеричную запись суммы чётных цифр elif count_odd > count_even: # Если нечётных цифр больше for i in t: # Складываем нечётные цифры записи if int(i) % 2 != 0: sum_digits += int(i) t += oct(sum_digits)[2:] # Добавляем к числу восьмеричную запись суммы нечётных цифр else: # Если количество цифр равно for i in t: # Складываем чётные цифры записи if int(i) % 2 == 0: sum_digits += int(i) t += oct(sum_digits // 2)[2:] # Добавляем к числу восьмеричную запись суммы чётных цифр, делённую на 2 r = int(t, 8) # Перевод в 10сс из 8сс if r <= 870: print(n)
Специальные программы

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

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

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

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

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

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