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

5.03 Действия над цифрами числа

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

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

Задача 1#6169

Автомат получает на вход пятизначное число. По этому числу строится новое число по таким правилам:

1. Складываются квадраты цифр, стоящих на нечетных позициях;

2. Складываются квадраты цифр, стоящих на четных позициях;

3. Затем в порядке неубывания записываются эти суммы.

Укажите наибольшее число, при вводе которого автомат выдает число 7590.

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

Сумма квадратов 3 чисел принадлежит промежутку [0,243], а сумма квадратов 2 чисел промежутку [0,162]. В соответствие с этими правилами число разбивается на число 75 и 90. Раскладывая данные числа на суммы квадратов, получаем набор цифр для исходного числа {1,3,5,7,9}, при этом цифры {3,9} находятся на четных позициях, и цифры {1,5,7} на нечетных. Тогда максимальное число есть 79531.

Решение программой:

В данной задаче мы должны найти наибольшее пятизначное число, которое после обработки автоматом даст результат 7590. Алгоритм работы автомата требует сначала вычислить сумму квадратов цифр на нечётных позициях числа, затем сумму квадратов цифр на чётных позициях, после чего эти две суммы записываются в порядке неубывания. Чтобы реализовать этот алгоритм на Python, мы начинаем с перебора всех пятизначных чисел от 10000 до 99999 включительно с помощью цикла for. Для каждого числа мы преобразуем его в строку s, чтобы было удобно обращаться к отдельным цифрам по индексам, а затем сразу формируем список цифр помощи map(int, str(i)). Далее вычисляем сумму квадратов цифр на нечётных позициях (индексы 0, 2, 4 в Python) и сохраняем её в переменной k1, а сумму квадратов цифр на чётных позициях (индексы 1, 3) — в переменной k2. После этого формируем результирующую строку, записывая меньшую из сумм первой, а большую — второй, с помощью функций min и max и конкатенации строк, и сохраняем результат в переменной res. Если эта строка совпадает с целевым значением ’7590’, мы добавляем текущее число в список a. После завершения перебора всех чисел мы используем функцию max для поиска наибольшего числа в списке a и выводим его, так как именно оно является наибольшим пятизначным числом, дающим нужный результат.

a = []  # Создаём пустой список для хранения чисел, результат обработки которых совпадает с целевым

for i in range(10000, 100000):  # Перебираем все пятизначные числа от 10000 до 99999 включительно
    s = str(i)  # Преобразуем число в строку для удобного доступа к отдельным цифрам
    k1 = int(s[0])**2 + int(s[2])**2 + int(s[4])**2  # Вычисляем сумму квадратов цифр на нечётных позициях (индексы 0, 2, 4)
    k2 = int(s[1])**2 + int(s[3])**2  # Вычисляем сумму квадратов цифр на чётных позициях (индексы 1, 3)
    first = min(k1, k2)  # Определяем меньшую сумму
    second = max(k1, k2)  # Определяем большую сумму
    if str(first) + str(second) == ’7590’:  # Проверяем, совпадает ли результат с целевым числом
        a.append(i)  # Если совпадает, добавляем число в список
print(max(a))  # Выводим наибольшее число из списка, которое даёт требуемый результат


Ответ: 79531

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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