5.03 Действия над цифрами числа
Ошибка.
Попробуйте повторить позже
Автомат получает на вход пятизначное число. По этому числу строится новое число по таким правилам:
1. Складываются квадраты цифр, стоящих на нечетных позициях;
2. Складываются квадраты цифр, стоящих на четных позициях;
3. Затем в порядке возрастания записываются эти суммы.
Укажите наименьшее число, при вводе которого автомат выдает число 9090.
Программное решение:
В этой задаче автомат преобразует пятизначное число в новое число, суммируя квадраты цифр, стоящих на нечётных и чётных позициях исходного числа. Чтобы реализовать это на Python, мы перебираем все пятизначные числа с помощью цикла for i in range(10000, 100000). Каждое число сначала преобразуем в строку с помощью str(), чтобы иметь возможность обращаться к отдельным цифрам по индексам: индекс 0 — первая цифра, индекс 1 — вторая и так далее. Затем для вычисления суммы квадратов цифр на нечётных позициях мы используем генератор списка с условием if j
После того как получены обе суммы, необходимо их записать в порядке возрастания: сначала меньшая, затем большая. Для этого сравниваем суммы и формируем строку ans, где меньшая сумма стоит первой, а большая — второй. Далее проверяем, совпадает ли получившаяся строка с числом 9090. Если совпадение найдено, выводим текущее пятизначное число и прерываем цикл, так как именно оно является наименьшим числом, которое даёт требуемый результат. Такой подход гарантирует, что мы учитываем порядок возрастания и корректно суммируем квадраты цифр на нужных позициях.
# Перебор всех пятизначных чисел от 10000 до 99999 включительно for i in range(10000, 100000): # Преобразуем число в строку для удобного обращения к его цифрам по индексам n = str(i) # Вычисляем сумму квадратов цифр, стоящих на нечётных позициях (индексы 0, 2, 4) nechet = sum([int(n[j]) ** 2 for j in range(len(n)) if j % 2 == 0]) # Вычисляем сумму квадратов цифр, стоящих на чётных позициях (индексы 1, 3) chet = sum([int(n[j]) ** 2 for j in range(len(n)) if j % 2 != 0]) # Формируем строку результата в порядке возрастания: сначала меньшая сумма, затем большая if nechet > chet: ans = str(chet) + str(nechet) else: ans = str(nechet) + str(chet) # Проверяем, совпадает ли результат с заданным числом 9090 if ans == ’9090’: # Выводим найденное наименьшее число, которое даёт требуемый результат print(i) # Завершаем цикл, так как ответ найден break
Аналитическое решение:
Сумма квадратов 3 чисел принадлежит промежутку [0,243], а сумма квадратов 2 чисел промежутку [0,162]. В соответствие с этими правилами число разбивается на числа 90 и 90. Раскладывая данные числа на суммы квадратов, получаем набор цифр для исходного числа {1,3,5,8,9}, при этом цифры {3,9} находятся на четных позициях, а цифры {1,5,8} на нечетных. Тогда минимальное число есть 13598.
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

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

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

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

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

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!