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

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

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

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

Задача 1#6166

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

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

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

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

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

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

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

В этой задаче автомат обрабатывает пятизначное число, выполняя описанные в условии действия. Нам нужно наименьшее число, которое даёт результат 36107. Переведём этот алгоритм на Python. Так как число должно быть пятизначным, будем перебирать все варианты от 10000 до 99999 включительно с помощью цикла for. Для удобного доступа к каждой цифре преобразуем текущее число в строку с функцией str(). Позиции в условии нумеруются слева направо, начиная с 1, поэтому нечётные позиции — это 1-я, 3-я и 5-я цифры, а чётные — 2-я и 4-я. Чтобы найти первую сумму, возведём в квадрат каждую цифру на нечётных позициях и сложим результаты, сохранив в переменной k1. Аналогично, сумму квадратов цифр на чётных позициях сохраним в переменной k2. Далее нужно записать эти суммы в порядке возрастания, поэтому определим меньшее из двух значений с помощью min(k1, k2) и большее с помощью max(k1, k2). Каждое из этих чисел преобразуем в строку, чтобы потом просто соединить через конкатенацию (+). Результат этой конкатенации сохраним в s1. Если s1 совпадает с ’36107’, значит текущее число подходит. Так как мы перебираем числа по возрастанию, первое найденное и будет наименьшим. Мы выведем его и завершим цикл командой break.

for i in range(10000, 100000):     # Перебираем все пятизначные числа от 10000 до 99999
     s = str(i)                    # Преобразуем число в строку для удобного обращения к цифрам по индексам
     k1 = int(s[0])**2 + int(s[2])**2 + int(s[4])**2  # Сумма квадратов цифр на нечётных позициях (индексы 0, 2, 4)
     k2 = int(s[1])**2 + int(s[3])**2                 # Сумма квадратов цифр на чётных позициях (индексы 1, 3)
     first = str(min(k1, k2))       # Преобразуем в строку меньшую из двух сумм и сохраняем
     second = str((max(k1, k2)))    # Преобразуем в строку большую из двух сумм и сохраняем
     s1 = first + second            # Конкатенируем строки в порядке возрастания сумм
     if s1 == ’36107’:              # Проверяем, совпадает ли результат с заданным "36107"
         print(i)                   # Выводим найденное число
         break                      # Прерываем цикл, так как наименьшее число уже найдено


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

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

Ответ: 10569

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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