5.04 Прочие прототипы
Ошибка.
Попробуйте повторить позже
Автомат получает на вход трехзначное число. По этому числу строится новое число по следующим правилам.
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) # Выводим количество таких чисел
Специальные программы

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

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

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

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

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

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