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

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

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

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

Задача 1#6168

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

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

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

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

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

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

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

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

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

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) == ’182’:  # Проверяем, совпадает ли результат с целевым значением
        a.append(i)  # Если совпадает, добавляем число в список
print(max(a))  # Выводим наибольшее число из списка, удовлетворяющее условию


Ответ: 91100

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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