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

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

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

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

Задача 1#7147

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

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

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

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

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

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

Программное решение:

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

Следующий шаг — формирование нового числа, которое автомат выдаёт на выходе. Мы сравниваем sumEven и sumOdd и строим строку answer так, чтобы меньшая сумма шла перед большей, что реализуется с помощью оператора if sumEven > sumOdd: ... else: .... После этого мы преобразуем получившуюся строку answer в число через int(answer) и проверяем, совпадает ли оно с требуемым значением 27. Так как нам нужно найти наибольшее пятизначное число, удовлетворяющее условию, мы будем выводить каждый подходящий вариант — в цикле он будет постепенно перебирать числа по возрастанию, и последнее выведенное число будет наибольшим.


# Перебор всех пятизначных чисел
for i in range(10000, 100000):
    # Преобразуем число в строку, чтобы удобно обращаться к цифрам по индексам
    i = str(i)
    # Вычисляем сумму квадратов цифр на чётных позициях (индексы 0, 2, 4)
    sumEven = int(i[0]) ** 2 + int(i[2]) ** 2 + int(i[4]) ** 2
    # Вычисляем сумму квадратов цифр на нечётных позициях (индексы 1, 3)
    sumOdd = int(i[1]) ** 2 + int(i[3]) ** 2
    # Формируем новое число в порядке возрастания сумм
    if sumEven > sumOdd:
        answer = str(sumOdd) + str(sumEven)
    else:
        answer = str(sumEven) + str(sumOdd)
    # Проверяем, совпадает ли получившееся число с требуемым значением
    if int(answer) == 27:
        # Выводим текущее число, которое даёт результат 27
        print(i)

Аналитическое решение:

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

Ответ: 30303

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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