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

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

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

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

Задача 1#7151

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

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

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

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

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

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

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

В этой задаче нам необходимо определить наибольшее пятизначное число, при вводе которого автомат выдаёт число 5085. Для этого мы «переводим» алгоритм с естественного языка на Python. Сначала мы используем цикл for с функцией reversed(range(...)), чтобы перебор чисел шёл от 99999 к 10000, поскольку нам важно найти наибольшее число. Внутри цикла каждое число преобразуем в строку с помощью str(i), чтобы можно было получить доступ к отдельным цифрам по индексам. Далее мы вычисляем сумму квадратов цифр на чётных позициях (индексы 0, 2, 4) и сохраняем её в переменную sum1, а сумму квадратов цифр на нечётных позициях (индексы 1, 3) — в sum2. Для возведения в квадрат используем выражение int(s[j])**2, где int(s[j]) превращает символ строки в число.

Следующий шаг — построение числа, которое выдаёт автомат. Мы объединяем меньшую и большую из сумм sum1 и sum2 в порядке возрастания с помощью str(min(sum1, sum2)) + str(max(sum1, sum2)) и сохраняем результат в переменную k. После этого проверяем, равен ли полученный результат строке ’5085’. Поскольку перебор ведётся в обратном порядке, как только мы находим совпадение, выводим число и сразу прерываем цикл с помощью break. Таким образом, гарантированно выводится наибольшее пятизначное число, соответствующее условию.

# Перебор всех пятизначных чисел в обратном порядке от 99999 до 10000
for i in reversed(range(10 ** 4, 10 ** 5)):
    # Преобразуем текущее число в строку для удобного доступа к цифрам
    s = str(i)
    # Вычисляем сумму квадратов цифр на чётных позициях (индексы 0, 2, 4)
    sum1 = int(s[0]) ** 2 + int(s[2]) ** 2 + int(s[4]) ** 2
    # Вычисляем сумму квадратов цифр на нечётных позициях (индексы 1, 3)
    sum2 = int(s[1]) ** 2 + int(s[3]) ** 2
    # Формируем число, объединяя меньшую и большую сумму в порядке возрастания
    k = str(min(sum1, sum2)) + str(max(sum1, sum2))
    # Проверяем, совпадает ли полученное число с нужным значением
    if k == ’5085’:
        # Выводим найденное число — наибольшее, которое даёт результат 5085
        print(i)
        # Прерываем цикл, так как нужное число уже найдено
        break

Решение руками:

Сумма квадратов 3  чисел принадлежит промежутку [0,243], а сумма квадратов 2  чисел промежутку [0,162]. В соответствие с этими правилами число разбивается на число 50  и 85  . Раскладывая данные числа на суммы квадратов, получаем набор цифр для исходного числа {0,1,2,7,9}. Если рассмотрим расположение позиций начиная с единицы, то на нечетных местах можно расположить числа {9, 2, 0}, а на четных позициях числа {7, 1}. Т.е. число 97210  . Если сложить квадраты чисел, то получим суммы как раз: 85  и 50  соответственно. Так как у нас суммы располагаются по возрастанию, тогда как раз выходит 5085  . И это максимальное расположение.

Ответ: 97210

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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