Тема 5. Алгоритмы – анализ простейших алгоритмов

5.02 Запись числа в другой системе счисления

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

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

Задача 1#72185

На вход алгоритма подаётся натуральное число N  . Алгоритм строит по нему новое число R  следующим образом.

1. Строится двоичная запись числа N  .

2. Далее эта запись обрабатывается по следующему правилу:

   а) если остаток от деления числа N  на 5 чётный, то к этой записи справа дописываются два нуля.

   б) если остаток от деления числа N  на 5 нечётный, то к этой записи справа дописывается единица.

Полученная таким образом запись является двоичной записью искомого числа R  .

3. Результат переводится в десятичную систему и выводится на экран.

Укажите минимальное число R  , большее 300, которое может быть получено в результате работы этого алгоритма. В ответе это число запишите в десятичной системе.

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

В данной задаче мы реализуем алгоритм, который преобразует число N в новое число R, следуя описанным шагам. Сначала для каждого числа N из диапазона от 1 до 999 мы получаем его двоичную запись в виде строки без префикса «0b». Затем анализируем остаток от деления числа N на 5: если этот остаток чётный, к двоичной записи справа дописываем два нуля, а если нечётный — добавляем единицу. Полученная строка является двоичной записью искомого числа R. Далее переводим эту строку из двоичной системы в десятичное число. В цикле перебираем все такие числа R, которые получаются для N от 1 до 999, и собираем те, которые больше 300. В конце среди всех найденных значений выбираем минимальное и выводим его.

ans= []  # Список для хранения всех подходящих значений R, больших 300
for n in range(1,1000):  # Перебираем все числа от 1 до 999 включительно
    t = bin(n)[2:]  # Получаем двоичную запись числа N без префикса ’0b’
    if (n % 5) % 2 == 0:  # Проверяем, является ли остаток от деления N на 5 чётным
        t += ’00’  # Если чётный, дописываем справа два нуля
    else:
        t += ’1’  # Если нечётный, дописываем справа единицу
    r = int(t,2)  # Переводим полученную двоичную строку в десятичное число R
    if r > 300:  # Проверяем, что R больше 300
        ans += [r]  # Добавляем R в список подходящих значений
print(min(ans))  # Выводим минимальное из найденных значений R, больших 300

Ответ: 303

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

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

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

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

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

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

Бесплатное онлайн-обучение

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

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

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

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

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

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

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

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