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

5.04 Прочие прототипы

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

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

Задача 1#57742

Автомат получает на вход трехзначное число. По этому числу строится новое число по следующим правилам.
1. Из цифр, образующих десятичную запись N, строится наибольшее и наименьшее возможные двузначные числа (числа не могут начинаться с нуля)
2. На экран выводится разность полученных двузначных чисел.

Чему равно количество чисел N в отрезке [300,700], в результате обработки которых на экране появится число 10?

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

В этой задаче нам нужно для каждого трёхзначного числа из диапазона [300, 700] рассмотреть все возможные пары цифр, из которых можно составить двузначные числа, не начиная их с нуля. Для этого мы сначала преобразуем число N в строку, чтобы получить доступ к каждой отдельной цифре. Далее мы перебираем все пары индексов цифр (i, j), где i < j, чтобы сформировать двузначные числа из двух выбранных цифр в обеих возможных порядках: s[i] + s[j] и s[j] + s[i]. Для каждой такой пары проверяем, что первая цифра не равна ’0’ — это условие задачи, запрещающее начинать число с нуля. Из всех возможных двузначных чисел, составленных из цифр числа N, выбираем наибольшее и наименьшее. Затем вычисляем их разность и проверяем, равна ли она 10. Если равна — увеличиваем счётчик. В конце выводим общее количество таких чисел N, для которых разность полученных двузначных чисел равна 10.

c = 0  # Счётчик чисел, удовлетворяющих условию
for n in range(300, 701):  # Перебор всех трёхзначных чисел от 300 до 700 включительно
    s = str(n)  # Преобразуем число в строку для удобного доступа к цифрам
    mn = 10**10  # Инициализируем минимум очень большим числом для последующего поиска минимального двузначного числа
    mx = -10**9  # Инициализируем максимум очень маленьким числом для последующего поиска максимального двузначного числа
    for i in range(len(s)):  # Перебираем первую цифру пары
        for j in range(i+1, len(s)):  # Перебираем вторую цифру пары, чтобы избежать повторений и порядок соблюсти
            if s[i] != ’0’:  # Проверяем, что первая цифра двузначного числа не равна нулю (условие задачи)
                val = int(s[i] + s[j])  # Формируем двузначное число из цифр s[i] и s[j]
                mx = max(val, mx)  # Обновляем максимум, если текущее число больше
                mn = min(val, mn)  # Обновляем минимум, если текущее число меньше
            if s[j] != ’0’:  # Аналогично проверяем вторую возможную пару с другой первой цифрой
                val = int(s[j] + s[i])  # Формируем двузначное число из цифр s[j] и s[i]
                mx = max(val, mx)  # Обновляем максимум
                mn = min(val, mn)  # Обновляем минимум
    if mx - mn == 10:  # Проверяем, равна ли разность максимума и минимума десяти
        c += 1  # Если да, увеличиваем счётчик подходящих чисел
print(c)  # Выводим количество таких чисел

Ответ: 24

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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