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

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

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

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

Задача 1#75234

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

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

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

а) если целая часть среднего значения цифр в числе N больше 5, то к записи в начало дописывается 1;

б) если целая часть среднего значения цифр в числе N меньше или равно 5, то к записи в начало дописывается 2.

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

Например, для исходного числа 3410 = 2216  результатом является число 22216 = 54610  , а для исходного числа 5610 = 3816  результатом является число 23816 = 56810  .

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

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

В данной задаче мы сталкиваемся с алгоритмом преобразования натурального числа N в новое число R, используя шестнадцатеричную систему счисления. Сначала нам необходимо представить исходное число N в шестнадцатеричной системе. Для этого мы используем встроенную функцию Python hex(), которая возвращает строковое представление числа с префиксом ’0x’, поэтому мы берём срез строки, начиная с третьего символа ([2:]), чтобы получить только шестнадцатеричные цифры числа без префикса.

Далее мы считаем среднее арифметическое цифр десятичного числа N. Для этого мы сначала преобразуем число N в строку, затем применяем функцию map с int, чтобы получить последовательность цифр в виде целых чисел. Суммируем эти цифры и делим на количество цифр, используя целочисленное деление //, что позволяет получить целую часть среднего значения. Это значение сравниваем с числом 5: если среднее больше 5, то в шестнадцатеричную запись числа N мы добавляем слева символ ’1’, иначе — символ ’2’.

Полученная строка теперь является шестнадцатеричной записью искомого числа R. Для дальнейших вычислений мы преобразуем её обратно в десятичное число с помощью функции int() с основанием 16. После этого проверяем, входит ли число R в заданный интервал (больше 310 и меньше 350). При первом же выполнении этого условия выводим число N и прерываем цикл, поскольку задача просит найти минимальное такое N.

for n in range(1, 1000):  # Перебираем числа N от 1 до 999 включительно
    t = hex(n)[2:]  # Переводим число N в шестнадцатеричную систему счисления, убирая префикс ’0x’

    # Преобразуем число N в строку и с помощью map(int, ...) получаем последовательность его цифр
    # Затем считаем сумму этих цифр и делим на их количество целочисленно,
    # чтобы получить целую часть среднего арифметического значения цифр числа N
    avg = sum(map(int, str(n))) // len(str(n))

    if avg > 5:  # Если целая часть среднего значения цифр больше 5
        t = ’1’ + t  # Дописываем ’1’ слева от шестнадцатеричной записи числа
    else:  # Если целая часть среднего значения цифр меньше или равна 5
        t = ’2’ + t  # Дописываем ’2’ слева от шестнадцатеричной записи числа

    r = int(t, 16)  # Переводим полученную строку из шестнадцатеричной системы в десятичную

    if r > 310 and r < 350:  # Проверяем, входит ли число R в интервал (310, 350)
        print(n)  # Выводим минимальное число N, для которого R попадает в заданный интервал
        break  # Прекращаем перебор, так как ответ найден


Ответ: 57

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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