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

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

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

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

Задача 1#7145

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

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

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

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

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

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

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

В этой задаче мы имеем автомат, который на вход получает пятизначное число и строит новое число на основе суммы квадратов цифр на нечётных и чётных позициях. Чтобы воспроизвести этот алгоритм на Python, мы начинаем с организации цикла for, который перебирает все пятизначные числа от 10000 до 99999. Для каждого числа мы преобразуем его в строку с помощью str(n), чтобы иметь возможность обращаться к его цифрам по индексам. После этого мы отдельно суммируем квадраты цифр, стоящих на нечётных позициях (с индексами 0, 2, 4) и на чётных позициях (с индексами 1, 3). Для этого используем int(s[i])**2 для каждой соответствующей цифры и суммируем результаты, получая две переменные: a для суммы квадратов нечётных позиций и b для суммы квадратов чётных позиций.

Далее мы формируем новое число в виде строки r, соединяя меньшую и большую суммы через str(min(a, b)) + str(max(a, b)), чтобы всегда записывать суммы в порядке возрастания. После этого проверяем, совпадает ли полученное число с требуемым значением 13. Поскольку нам нужно найти наибольшее число, удовлетворяющее условию, мы храним текущее максимальное значение в переменной max_n и обновляем её при каждом подходящем числе. В конце выводим max_n, что даёт наибольшее число, которое при обработке автоматом выдаёт 13.

# Инициализация переменной для хранения наибольшего числа, которое даёт нужный результат
max_n = 10000

# Перебор всех пятизначных чисел
for n in range(10000, 100000):
    # Преобразуем число в строку, чтобы удобно обращаться к цифрам по индексам
    s = str(n)
    # Считаем сумму квадратов цифр на нечётных позициях (индексы 0, 2, 4)
    a = int(s[0])**2 + int(s[2])**2 + int(s[4])**2
    # Считаем сумму квадратов цифр на чётных позициях (индексы 1, 3)
    b = int(s[1])**2 + int(s[3])**2
    # Формируем новое число в порядке возрастания сумм
    r = int(str(min(a, b)) + str(max(a, b)))
    # Проверяем, совпадает ли сформированное число с требуемым
    if r == 13 and n > max_n:
        # Если число больше текущего максимума, обновляем max_n
        max_n = n

# Выводим наибольшее число, которое даёт требуемый результат
print(max_n)

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

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

Раскладывая вторые числа на суммы квадратов, получаем набор цифр для исходного числа {0,0,0,3,2}, при этом цифры {0,0} находятся на четных позициях, и цифры {0,2,3} на нечетных. Тогда максимальное число есть 30200.

Ответ: 30200

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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