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

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

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

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

Задача 1#6167

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

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

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

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

Нумерация цифр начинается с единицы.

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

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

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

В этой задаче нам нужно найти наименьшее пятизначное число, которое, пройдя через описанный в условии алгоритм, выдаёт результат 26149. Для этого мы должны «перевести» пошаговые действия автомата с естественного языка на язык Python. Мы начинаем с перебора всех пятизначных чисел — от 10000 до 99999 включительно, что в Python удобно реализовать через range(10_000, 99_999 + 1). Каждое число цикла i преобразуем в строку функцией str, чтобы получить доступ к отдельным цифрам по индексам, а затем сразу превращаем их в целые числа через map(int, ...), чтобы можно было выполнять арифметические операции. Полученный список цифр сохраняем в переменной nums. По условию задачи, цифры на нечётных позициях (нумерация с 1, значит индексы 0, 2 и 4 в Python) нужно возвести в квадрат и сложить — это реализуем как nums[0] ** 2 + nums[2] ** 2 + nums[4] ** 2, результат сохраняем в nch. Аналогично, для чётных позиций (индексы 1 и 3) считаем сумму квадратов в переменную ch. Дальше, согласно правилу, нужно записать полученные суммы в порядке возрастания. Для этого проверяем, меньше ли ch, чем nch: если да, то конкатенируем их в строковом виде как str(ch) + str(nch), иначе меняем местами. Эта итоговая строка хранится в res. На последнем шаге проверяем, совпадает ли она с целевым значением ’26149’. Если совпадает — это значит, что текущее число i является ответом. Так как числа перебираются по возрастанию, первым найденным будет наименьшее, поэтому выводим его и прерываем цикл оператором break.

for i in range(10_000, 99_999 + 1):  # Перебираем все пятизначные числа от 10000 до 99999 включительно
    nums = list(map(int, str(i)))  # Преобразуем число в строку и затем в список его цифр как целых чисел
    nch = nums[0] ** 2 + nums[2] ** 2 + nums[4] ** 2  # Суммируем квадраты цифр на нечётных позициях (индексы 0, 2, 4)
    ch = nums[1] ** 2 + nums[3] ** 2  # Суммируем квадраты цифр на чётных позициях (индексы 1, 3)
    if ch < nch:  # Если сумма квадратов чётных позиций меньше суммы квадратов нечётных
        res = str(ch) + str(nch)  # Сначала записываем меньшую сумму, затем большую
    else:  # В противном случае сумма квадратов нечётных позиций меньше или равна
        res = str(nch) + str(ch)  # Сначала записываем меньшую сумму, затем большую
    if res == ’26149’:  # Проверяем, совпадает ли результат с целевым значением
        print(i)  # Выводим найденное наименьшее число
        break  # Прерываем цикл, так как ответ найден


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

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

Ответ: 21859

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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