5.03 Действия над цифрами числа
Ошибка.
Попробуйте повторить позже
Автомат получает на вход пятизначное число. По этому числу строится новое число по таким правилам:
1. Складываются квадраты цифр, стоящих на нечетных позициях (пусть нумерация идет с левой цифры);
2. Складываются квадраты цифр, стоящих на четных позициях;
3. Затем в порядке возрастания записываются эти суммы.
Укажите наименьшее число, при вводе которого автомат выдает число 4141.
Решение программой:
В этой задаче нам необходимо найти наименьшее пятизначное число, которое после обработки по правилам автомата даст число M, равное 4141. Для этого мы перебираем все пятизначные числа от 10000 до 99999 с помощью цикла for k in range(10000, 100000). Для удобства работы с отдельными цифрами каждого числа мы преобразуем число в строку s = str(k), а затем используем индексы строки, чтобы обратиться к конкретной цифре.
Следующим шагом мы вычисляем две суммы квадратов цифр: для нечётных позиций (первой, третьей и пятой цифр) мы возводим соответствующие цифры в квадрат и складываем их (int(s[0]) ** 2 + int(s[2]) ** 2 + int(s[4]) ** 2), а для чётных позиций (второй и четвёртой цифр) выполняем аналогичное действие (int(s[1]) ** 2 + int(s[3]) ** 2). Эти две суммы представляют собой промежуточные результаты, которые затем нужно записать в порядке возрастания. Мы используем функцию min() для выбора меньшей суммы и max() для большей суммы, формируя новое число через конкатенацию строк str(min(odd_sum, even_sum)) + str(max(odd_sum, even_sum)) и затем преобразуем результат обратно в число через int().
После формирования числа мы проверяем, совпадает ли полученное число с целевым значением 4141. Если это так, мы сохраняем исходное число k как min_k и прерываем цикл через break, так как нас интересует именно наименьшее число, которое даёт нужный результат. Наконец, найденное число выводится с помощью print(min_k).
min_k = None # Инициализируем переменную для хранения наименьшего числа, которое удовлетворяет условиям for k in range(10000, 100000): # Перебираем все пятизначные числа от 10000 до 99999 включительно s = str(k) # Преобразуем число в строку для удобного обращения к отдельным цифрам по индексам odd_sum = int(s[0]) ** 2 + int(s[2]) ** 2 + int(s[4]) ** 2 # Суммируем квадраты цифр на нечётных позициях (1, 3, 5) even_sum = int(s[1]) ** 2 + int(s[3]) ** 2 # Суммируем квадраты цифр на чётных позициях (2, 4) result = int(str(min(odd_sum, even_sum)) + str(max(odd_sum, even_sum))) # Формируем новое число: сначала меньшая сумма, затем большая, без разделителей if result == 4141: # Проверяем, совпадает ли полученное число с требуемым результатом min_k = k # Если да, сохраняем текущее число как наименьшее подходящее break # Прерываем цикл, так как найдено наименьшее число, удовлетворяющее условиям print(min_k) # Выводим найденное число
Решение руками:
Сумма квадратов 3 чисел принадлежит промежутку [0,243], а сумма квадратов 2 чисел
промежутку [0,162]. В соответствие с этими правилами число 4141 разбивается на числа
41 и 41. Всего на нечетных позициях в пятизначном числе стоит 3 цифры, на четных - 2
цифры. Определим сначала, какие цифры могут стоять на четных позициях. Это можно
сделать с помощью перебора всех комбинаций x и y, которые являются решениями уравнения
Оба числа x и y не могут превышать значения 6, так что перебор не будет
большим. В результате получаем комбинацию {4, 5}. Теперь найдем комбинацию цифр, которые
должны стоять на нечетных позициях. Для этого положим три различные переменные в новое
уравнение:
Рассмотрим случай . Целых решений для x в уравнении
нет, поскольку 3 не
является делителем 41.
Далее рассмотрим
Необходимо подобрать такое значение z, чтобы полуразность 41 и квадрата z была квадратом
какого-либо натурального числа. Перебором приходим к выводу, что если то
Мы нашли частное решение 34454, рассмотрим последний случай, когда x, y и z различны между собой.
Чтобы нашлось число меньше, нужно, чтобы одна из переменных была меньше, чем 3.
Допустим, тогда
а это, как мы знаем, может быть только при
и
или наоборот, при
Проверим, что будет при x = 1. Перебором приходим к выводу, что уравнение верно
только для комбинации решений {6, 2}.
Таким образом, располагая цифры в порядке возрастания, имеем число 14256. Первую цифру
меньше получить уже нельзя, поскольку иначе выйдет 4-значное число, 2 и 4 цифры нельзя взять
меньше из-за единственности решения уравнения на множестве натуральных чисел, 3 и 5
цифры аналогично из-за единственности решения уравнения
Специальные программы

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

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

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

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

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

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