Тема 5. Простейшие исполнители и алгоритмы
5.01 Двоичная запись числа
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела простейшие исполнители и алгоритмы
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#30300

МС получает на вход натуральное число N > 1  и строит по нему новое число R  следующим образом:

  1. Строится двоичная запись числа N  .
  2. Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется её последняя цифра. В противном случае в конец записи добавляется цифра, которая встречается реже.
  3. Шаг 2  повторяется еще два раза.
  4. Результат переводится в десятичную систему счисления.

При каком наибольшем исходном числе N < 1024  в результате работы алгоритма получается нечетное число, которое делится на 7  ?

Показать ответ и решение

Решение 1

for i in range(1023, 1, -1):
    s = bin(i)[2:] # Внизу отказ от ИВ
    s += s[-1] * (s.count(’0’) == s.count(’1’)) + \
    ’1’ * (s.count(’1’) < s.count(’0’)) + ’0’ * (s.count(’0’) < s.count(’1’))
    s += s[-1] * (s.count(’0’) == s.count(’1’)) + \
    ’1’ * (s.count(’1’) < s.count(’0’)) + ’0’ * (s.count(’0’) < s.count(’1’))
    s += s[-1] * (s.count(’0’) == s.count(’1’)) + \
    ’1’ * (s.count(’1’) < s.count(’0’)) + ’0’ * (s.count(’0’) < s.count(’1’))
    if int(s, 2) % 2 != 0 and int(s, 2) % 7 == 0:
        print(i)
        break

Решение 2

for i in range(1023, 1, -1):
    s = bin(i)[2:]
    for j in range(3):
        k = s.count(’1’) - s.count(’0’)
        if (k < 0):
            s += ’1’
        elif (k > 0):
            s += ’0’
        else:
            s += s[-1]
    if int(s, 2) % 2 != 0 and int(s, 2) % 7 == 0:
        print(i)
        break

Ответ: 914

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

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

Бесплатное обучение
в Школково

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

Налоговые вычеты

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

Специальное предложение
для учителей

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

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!