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

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

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

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

Задача 1#7142

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

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

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

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

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

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

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

В этой задаче мы имеем автомат, который получает пятизначное число и строит новое число на основе суммы квадратов цифр на нечётных и чётных позициях, а затем соединяет эти суммы в порядке возрастания. Для реализации этого алгоритма на Python мы создаём отдельную функцию calculate_sum(num), которая принимает число num и возвращает две суммы: квадратов цифр на нечётных позициях и квадратов цифр на чётных позициях. Внутри функции мы инициализируем переменные odd_sum и even_sum, затем с помощью цикла for i in range(5) обрабатываем каждую цифру числа. Цифру получаем остатком от деления на 10 (digit = num

После создания функции мы организуем перебор всех пятизначных чисел от 10000 до 99999 включительно через цикл for num in range(10000, 100000). Для каждого числа вызываем функцию calculate_sum(num), получаем суммы квадратов цифр на нечётных и чётных позициях и проверяем, совпадают ли они с требуемыми значениями для формирования числа 72128, учитывая, что меньшая сумма должна стоять первой. Если условие выполняется, выводим текущее число и прерываем цикл, так как нас интересует наименьшее подходящее число.

# Функция для вычисления суммы квадратов цифр на нечётных и чётных позициях
def calculate_sum(num):
    # Инициализируем суммы для нечётных и чётных позиций
    odd_sum = 0
    even_sum = 0
    # Обрабатываем каждую из 5 цифр числа
    for i in range(5):
        # Получаем последнюю цифру числа
        digit = num % 10
        # Определяем, к какой сумме относится цифра: чётная или нечётная позиция
        if i % 2 == 0:
            even_sum += digit ** 2  # Чётные позиции
        else:
            odd_sum += digit ** 2   # Нечётные позиции
        # Убираем последнюю цифру числа для обработки следующей
        num //= 10
    # Возвращаем обе суммы
    return odd_sum, even_sum

# Перебираем все пятизначные числа
for num in range(10000, 100000):
    # Получаем суммы квадратов цифр на нечётных и чётных позициях
    odd_sum, even_sum = calculate_sum(num)
    # Проверяем, совпадают ли суммы с заданным числом 72128
    if (odd_sum == 72 and even_sum == 128) or (odd_sum == 128 and even_sum == 72):
        # Выводим найденное число
        print(num)
        # Прерываем цикл, так как нам нужно наименьшее число
        break

Ответ: 28288

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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